不是真正的要求或其他任何东西,但你能否在控制器中做到这一点:
public ActionResult Edit(IEnumerable<Contact> contacts)
{
//Loop through and save all records
return View();
}
这来自于希望在表单上有多个记录, WITH NO GRID 并提交所有项目。 HTML将与此类似
<form>
<input type="text" id="FirstName" value="Joe"/><input type="text" id="LastName" value="Smith"/><input type="hidden" id="PK" value="1"/>
<input type="text" id="FirstName" value="Joe"/><input type="text" id="LastName" value="Smithen"/><input type="hidden" id="PK" value="2"/>
<input type="text" id="FirstName" value="Joe"/><input type="text" id="LastName" value="Smiths"/><input type="hidden" id="PK" value="3"/>
<input type="text" id="FirstName" value="Joe"/><input type="text" id="LastName" value="Smithy"/><input type="hidden" id="PK" value="4"/>
<input type="text" id="FirstName" value="Joe"/><input type="text" id="LastName" value="Smithers"/><input type="hidden" id="PK" value="5"/>
<input type="submit" value="Save"/>
</form>
您是否必须创建自己的路由器或什么?任何人? Bueller?
答案 0 :(得分:0)
你需要这个:
<form>
<input type="text" name="contacts[0].FirstName" id="contacts[0].FirstName" value="Joe"/>
<input type="text" name="contacts[0].LastName" id="contacts[0].LastName" value="Smith"/>
<input type="hidden" name="contacts[0].PK" id="contacts[0].PK" value="1"/>
....
<input type="text" name="contacts[5].FirstName" id="contacts[5].FirstName" value="Joe"/>
<input type="text" name="contacts[5].LastName" id="contacts[5].LastName" value="Smithen"/>
<input type="hidden" name="contacts[5].PK" id="contacts[5].PK" value="2"/>
<input type="submit" value="Save"/>
</form>
答案 1 :(得分:0)
首先,将所有“id”替换为“name”属性。文档可能没有多个具有相同ID的元素。
关于你的问题,开箱即用是不可能的。但是解析表单值非常容易,它应该只是一个逗号分隔的字符串。
答案 2 :(得分:0)
Scott Hanselman的这篇文章详细讨论了数据绑定集合:
ASP.NET Wire Format for Model Binding to Arrays, Lists, Collections, Dictionaries