我有一个视图,用户可以触发在页面中插入input
标记的操作:
“添加更多”按钮与jquery点击事件相关联。
HTML:
<div id="details">
<label>More details</label>
<input placeholder="Foo" asp-for="">
<input placeholder="Bar" asp-for="">
</div>
<button id="add-details" type="button">Add more</button>
JS:
$("#add-details").click(function(){
$("#details").append(`<input placeholder="Foo" asp-for="">
<input placeholder="Bar" asp-for="">`)
});
现在,我想将<input>
标签绑定到C#模型,以便在Controller中检索它们的值。但是可能有任何数量的这些标签。
检索它们最方便的方法是Dictionary<T>
,但我不知道在asp-for
属性中放什么。
那我的Model
怎么样?我应该在asp-for
属性中加入什么?
答案 0 :(得分:1)
虽然this answer不是关于TagHelpers(您正在使用),但请阅读它以了解您需要做什么以及为什么要做的背景。
在您的情况下,您将需要添加输入标记,以便它们的名称与索引一样是数组。例如,下面:
<input placeholder="Foo" asp-for="[0].Foo">
<input placeholder="Foo" asp-for="[1].Foo">
将映射到集合,第一个项目(索引0)将是带有asp-for="[0].Foo"
的输入标记的内容,第二个项目将是输入标记的内容与asp-for="[1].Foo"
。
你的控制器动作方法应该接受一个集合。例如,如果您要添加学生,则操作方法可能如下所示:
[HttpPost]
public ActionResult Index(List<Student> students) { ... }
最后,请参阅docs的表达式名称和收藏集以获取更多信息。