Textboxfor新列表条目

时间:2015-04-08 13:06:57

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

我对MVC很新,我想知道以下几行是否可行?

我正在尝试为列表中的新项目创建文本框的html帮助器。列表中的项目数量是动态且未知的。

型号(person.cs)

public class Person
{
    public List<string> Strings = new List<string>();
}

查看(Index.cshtml)

@model Project.Models.Person

@{

    int length = (int)Session["Length"];

    for (int i = 0; i < length; i++)
    {
        Html.TextBoxFor(p => p.Strings[i])
    }
}

显然这段代码不起作用,但它是我想要实现的最简单的表示,我想知道我可以做些什么来使这段代码工作,或者让我动态添加或创建新项目的任何变通办法在一个集合中。

2 个答案:

答案 0 :(得分:1)

使用ViewBag。从控制器返回View时

   ViewBag.Strings = string.Join(", ", Strings .Select(x => x.Name));

在视图中,

@foreach (var str in ((List<string>)ViewBag.Strings)) 
{
  @str //In your case textbox
}

答案 1 :(得分:0)

最好避免在MVC项目中使用会话状态。 MVC的构思围绕着您的网站是一个信息逻辑模型的视图。它鼓励通过使用简单的控制器来响应无状态操作,这些控制器响应作为HTTP请求的一部分传递的关键信息的动作。

以下代码段将显示字符串集合中每个项目的输入控件。

@model Project.Models.Person

@{
    for (int i = 0; i < Model.Strings.Count; i++)
    {
        @Html.TextBox((string.Format("[{0}]", i), Model.Strings[i]);
    }
}