这就是我想要做的:
我有一个带有一些输入字段的表格。表单的一部分允许用户选择多个选项(书籍),但不知道有多少。
型号:
public class Data
{
public string name { get; set; }
public string age { get; set; }
...
public List<Books> books { get; set; }
...
}
然后
public class Books
{
public string Title { get; set; }
public string Author { get; set; }
}
查看:
@model Applicants.Models.Data
...
<input type="text" name="Title" value="" />
<input type="text" name="Author" value="" />
我的问题是,我如何提交多个标题和作者以及其他表单数据?以及如何正确命名输入字段?
我已经读过这个https://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx/
但是该示例仅提交了一个列表,没有其他数据。
谢谢。
答案 0 :(得分:0)
您可以为普通html语法的绑定模型执行此操作,这只是示例 您需要根据需要进行修改
<input type="text" name="Model.name" value="Curious George" />
<input type="text" name="Model.age" value="H.A. Rey" />
<input type="text" name="Model.books[0].Title" value="Curious George" />
<input type="text" name="Model.books[0].Author" value="H.A. Rey" />
答案 1 :(得分:0)
由于使用的是Razor视图,因此可以使用强类型的@Html.TextBoxFor()
助手,并可以使用for
循环在books
列表内生成多个文本框:
@model Applicants.Models.Data
@using (Html.BeginForm())
{
@Html.TextBoxFor(model => model.name)
@Html.TextBoxFor(model => model.age)
@for (int i = 0; i < Model.books.Count; i++)
{
@Html.TextBoxFor(model => model.books[i].Title)
@Html.TextBoxFor(model => model.books[i].Author)
}
@* don't forget to add submit button here *@
}
假设您具有POST操作,且该操作具有<input>
作为viewmodel参数,则循环将生成以下示例,例如以下示例:
Applicants.Models.Data
有关工作示例,请参见this fiddle。