如何使用@ Html.TextAreaFor

时间:2017-02-17 16:17:24

标签: c# asp.net-mvc asp.net-mvc-4 razor

我将ASP Classic应用程序迁移到ASP.Net MVC 5.遗留数据在文本中包含<BR>个标记。在旧应用程序(仍在使用中)中,标记呈现为换行符。使用普通的html <textarea>标记创建和显示数据。例如,轧辊轧制数列表在多行中的单个字段中输入。如何在MVC中保留此行为?我试过了:

@Html.TextAreaFor(model => model.MillRoll, new { @class = "form-control" })

结果是一个输入控件显示一行多个Mill Rolls,每个卷号之间带有<BR>标签,而不是显示多行。我对将数据分成另一个表并不感兴趣。新的应用程序需要像旧的允许进入和在单个输入控件中保存多行。我想为自己和用户简单地过渡到MVC应用程序。

1 个答案:

答案 0 :(得分:0)

您可以使用属性动态转换数据 替换“&lt; br&gt;”使用“\ r \ n”和返回(您也可以使用System.Environment.NewLine而不是“\ r \ n”)。
因此,当您获得遗留数据时,将“&lt; br&gt;”替换为“\ r \ n”,然后它应该显示确定为textarea。如果您需要使用&lt; br&gt;保存旧版格式的更改,只需更换“\ r \ n”与&lt; br&gt;并保存。

public string myLegacyDataString;
public string MyDataString{
    get {return myLegacyDataString.Replace("< br >","\r\n");}
    set {myLegacyDataString = value.Replace("\r\n", "< br >");}
}

或使用NewLine:

public string myLegacyDataString;
public string MyDataString{
    get {return myLegacyDataString.Replace("< br >",System.Environment.NewLine);}
    set {myLegacyDataString = value.Replace(System.Environment.NewLine, "< br >");}
}