花了一点时间想出一个合适的标题,我不确定我是否正确地说明了这一点。对于我的例子,我将使用Person对象,但我的真实应用程序正在使用更具特定领域的东西:
public class Person {
public string Name { get; set;}
public string Gender { get; set; }
public string HairColor{ get; set; }
}
基本上,我的要求是允许用户输入0-10个Person对象,这些对象将映射到模型中的List<Person> People
属性。
我在考虑这样做的方式是让一个与一个人相关的输入块:
<div>
<label for="name">Name</label>
<input type="text" name="name">
</div>
<div>
<label for="gender">Gender</label>
<input type="radio" name="gender" value="male"> Male
<input type="radio" name="gender" value="female"> Female
</div>
<div>
<label for="hairColor">Hair Color</label>
<input type="radio" name="hairColor" value="black"> Black
<input type="radio" name="hairColor" value="brown"> Brown
<input type="radio" name="hairColor" value="blonde"> Blonde
<input type="radio" name="hairColor" value="red"> Red
</div>
底部带有“添加另一个”按钮,它将使用JQuery追加这些输入的附加块。
我的问题是,如何在html输入标记中生成name
属性以正确绑定到List<Person>
? <input type="text" name="People[0].Name">
会有效吗?
答案 0 :(得分:0)
将您的页面拆分为2个部分视图。第一个局部视图将返回已保存人员的列表。第二个部分视图是添加新人的视图。
首先加载您的页面,然后只显示“添加另一个”按钮。单击“添加另一个”将使用jquery调用AddPerson局部视图getter,并将div替换为刚刚调用的局部视图。
在AddPerson局部视图中单击“保存”将发布新人并刷新列表。
答案 1 :(得分:0)
我不确定你打算如何从网页上获取数据并在asp.net端访问它。通常,您需要runat="server"
标签来表示服务器将访问的内容。
您指定要在按钮单击时生成该块的副本,但是通过JQuery。如果你想这样做,你需要创建一个你想要复制的HTML块的字符串变量。使用一些基本的字符串连接和循环,您可以在输入中使用name=name0
,name=gender0
,...等。当您按&#34;添加另一个&#34;时,将+1添加到附加到字符串中名称的增量中,以便他们重新name=name1
,name=gender1
等。