模型
public class IntegerList
{
public int IntegerListID { get; set; }
public string Direction { get; set; }
public long Performance { get; set; }
public virtual ICollection<Integer> Integers { get; set; }
}
public class Integer
{
public int IntegerID { get; set; }
[Required(ErrorMessage = "An integer is Required")]
[Range(0, 9999999, ErrorMessage = "Enter an integer")]
public int IntegerValue { get; set; }
public int IntegerListID { get; set; }
public virtual IntegerList IntegerList { get; set; }
}
上述模型适用于将整数范围按升序或降序排序的应用程序,并计算执行排序所需的时间。
用户可以使用jquery添加或删除整数,从而将整数输入到文本框中。
我通过将formcollection传递给控制器来运行应用程序,将整数字符串拆分为一个整数值数组,以添加到IntegerList.Integers。
但是,我正在寻找一种更优雅的强类型解决方案。
视图模型
public class IntegerViewModel
{
[UIHint("Integers")]
public IEnumerable<Integer> Integers { get; set; }
public string Direction { get; set; }
}
我正在努力将Integers.IntegerValues添加到视图中,以便可以通过viewmodel将它们传递给控制器。我还需要增加/减少每个IntegerValue文本框值,因为它是由jquery添加/删除的。我不确定我是从正确的角度接近这个。
我希望这很清楚。谢谢你的帮助。
剃刀
<form method="post">
<div id="integers">
@Html.Label("Enter Integers")
<div class="integer">
@Html.EditorFor(model => model.Integers)
<a href="#" id="addInt">Add Integer</a>
</div>
</div>
@Html.Label("Sort Direction")
<div>
@Html.DropDownListFor(model => model.Direction, new[] {
new SelectListItem() {Text = "Ascending", Value = "Ascending"},
new SelectListItem() {Text = "Descending", Value = "Descending"}
})
<input class="button" type="submit" value="Submit" />
</div>
</form>
编辑模板(适用于整数)
@model Integer
@Html.EditorFor(m => m.IntegerValue)
答案 0 :(得分:0)
让我总结一切。
在使用JavaScript(jQuery)添加和删除值(整数)时,您将找不到任何强类型解决方案。
因此,当您使用jquery添加整数编辑器时,您应该根据ASP.NET MVC契约呈现适当的HTML。
大卫的评论非常有价值。看看这个链接。 http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx
在这里,您可以看到如何呈现HTML以在服务器上接收不同类型的数据(ASP.NET MVC操作)。
此外,您可以检查您的EditorFor输出并呈现HTML,就像使用MVC渲染一样。
最后,这是关于ASP.NET MVC中动态表单字段的问题。 ASP.NET MVC Dynamic Forms
希望这有帮助。