html.textareafor - 解析成一个字符串数组

时间:2017-07-05 07:00:35

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

我在C#MVC(.NET)中并且有一个表单,我输入了@html.TextAreaFor 存储为字符串 我假设这个文本框中的数据将存储为一个字符串,但我想知道的是字符串将如何看待" / n"元素,字符串是否会分隔新的行标记?

理想情况下,我需要逐行解析文本框,其中每行的字符串成为List的元素 例如,如果我们在文本框中

  item1
  item2
  item3

然后当我提交表单时,我指定的模型将使用文本框中的字符串加载,并使用该字符串我们将使用item1,item2加载我们的List(在其他地方,在不同的模型中..)和item3。

1 个答案:

答案 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

相关问题:

How to parse user input from a textarea line by line