我在C#MVC(.NET)中并且有一个表单,我输入了@html.TextAreaFor 存储为字符串 我假设这个文本框中的数据将存储为一个字符串,但我想知道的是字符串将如何看待" / n"元素,字符串是否会分隔新的行标记?
理想情况下,我需要逐行解析文本框,其中每行的字符串成为List的元素 例如,如果我们在文本框中
item1
item2
item3
然后当我提交表单时,我指定的模型将使用文本框中的字符串加载,并使用该字符串我们将使用item1,item2加载我们的List(在其他地方,在不同的模型中..)和item3。
答案 0 :(得分:3)
假设您TextAreaFor
绑定到名为TextAreaModel
的模型属性,该属性包含来自用户输入的字符串,如下所示:
@model ViewModel
@Html.TextAreaFor(m => m.TextAreaModel, new { ... })
从模型属性中提取行的正确方法是在POST操作方法中使用Environment.NewLine
作为分隔符拆分字符串内容,如下例所示:
[HttpPost]
public ActionResult SubmitForm(ViewModel model)
{
// other stuff
// parse every textarea lines as list elements
List<string> list = model.TextAreaModel.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries).ToList();
// assign it to other list property on other model
OtherModel.OtherList = list;
// other stuff
return View(model);
}
注意:StringSplitOptions.RemoveEmptyEntries
将删除在源字符串中找到的空行,我认为这比使用StringSplitOptions.None
更为推荐。
演示:
.NET Fiddle Example - Splitting By Newline
.NET Fiddle Example - MVC Implementation
相关问题: