创建一个输入,允许用户在ASP.NET视图中输入对象的变量列表

时间:2016-07-21 15:25:57

标签: c# asp.net asp.net-mvc

花了一点时间想出一个合适的标题,我不确定我是否正确地说明了这一点。对于我的例子,我将使用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">会有效吗?

2 个答案:

答案 0 :(得分:0)

将您的页面拆分为2个部分视图。第一个局部视图将返回已保存人员的列表。第二个部分视图是添加新人的视图。

首先加载您的页面,然后只显示“添加另一个”按钮。单击“添加另一个”将使用jquery调用AddPerson局部视图getter,并将div替换为刚刚调用的局部视图。

在AddPerson局部视图中单击“保存”将发布新人并刷新列表。

答案 1 :(得分:0)

我不确定你打算如何从网页上获取数据并在asp.net端访问它。通常,您需要runat="server"标签来表示服务器将访问的内容。

您指定要在按钮单击时生成该块的副本,但是通过JQuery。如果你想这样做,你需要创建一个你想要复制的HTML块的字符串变量。使用一些基本的字符串连接和循环,您可以在输入中使用name=name0name=gender0,...等。当您按&#34;添加另一个&#34;时,将+1添加到附加到字符串中名称的增量中,以便他们重新name=name1name=gender1等。