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