如何使用用户输入的换行符等保存字符串?

时间:2014-02-02 20:59:20

标签: c# asp.net-mvc string textarea

我有一个textarea,用户可以在其中键入输入,但如果他们在文本区域中创建换行符,我希望将其保存到数据库中,以便它与换行符一起显示。我该怎么做?

似乎当字符串保存到数据库时,/ n将从字符串中删除。

我正在使用带有EF6的C#

gfdh
hgfd
hgfd
hgfd
;

以上是html中显示的内容,但它的实际显示只是一行而没有换行符

我已经尝试过br解决方案,但是如果它在标签内,它在引号和br标签内是无用的。如何让标签逃脱

        public void SendMessageToUser(Message message)
    {
        var db = new database();
        var list = db.Conversations.FirstOrDefault(c => c.UserAId == message.SenderId && c.UserBId == message.ReceiverId || c.UserAId == message.ReceiverId && c.UserBId == message.SenderId);
        if (list != null)
        {
            message.ConversationId = list.ConversationId;
            message.DateSent = DateTime.Now;
            db.Messages.Add(message);
        }
        else
        {
            var conversation = new Conversation();
            conversation.DateStarted = DateTime.Now;
            conversation.ConversationStatusId = 1;
            conversation.UserAId = message.ReceiverId;
            conversation.UserBId = message.SenderId;
            message.ConversationId = db.Conversations.Add(conversation).ConversationId;
            message.MessageStatusId = 1;
            message.DateSent = DateTime.Now;
            db.Messages.Add(message);
        }
        db.SaveChanges();
    }



    public class Message
{
    public int MessageId { get; set; }
    public string Content { get; set; }
    public DateTime DateSent { get; set; }

    [ForeignKey("Conversation")]
    public int ConversationId { get; set; }
    public virtual Conversation Conversation { get; set; }

    public int MessageStatusId { get; set; }
    public virtual MessageStatus MessageStatus { get; set; }

    [ForeignKey("Sender")]
    public int SenderId { get; set; }
    public virtual User Sender { get; set; }

    [ForeignKey("Receiver")]
    public int ReceiverId { get; set; }
    public virtual User Receiver { get; set; }


}

HTML

 @foreach (var m in Model.Messages)
            {
    <h3>@m.Sender.Username</h3>
                    <p>@m.DateSent.ToShortTimeString()</p>
                    @string.Format("{0}",m.Content);
                    @m.Content;

1 个答案:

答案 0 :(得分:0)

文本区域中的文本将与数据库中的换行符一起存储。但是,如果要以HTML格式显示文本,则必须将换行符替换为<br />标记,并告知razor不对HTML进行编码。您可以通过将文本包装在MvcHtmlString中来实现。

Here是一个如何通过一点HtmlHelper实现这一目标的示例。另一种方法是使用@Html.Raw("Your text") HtmlHelper显示文本。

显示换行符的另一个可能性是使用white-space: pre-line;,因此您不需要在代码中允许HTML标记,这样可以使其更安全。 (See here