c# – 具有重复名称值MVC的Http Post

在MVC中,我有一个使用大量重复信息的表单.基本上他们点击一个按钮,弹出另一个“表单”(文本框下拉列表等).当他们点击提交按钮时,所有这些都会返回相同的名称.我如何才能在帖子中使名称不同或能够将项目放入列表中?

我的代码:

@Html.TextBox("Textbox1", "", new { placeholder = "", size = "77", maxlength = "76" })
@Html.DropDownList("Country", ViewData["CountryOptions"] as SelectList,"Select", new { id = "Country"})</div>
<div class="pad5">
<span class="FieldLabel">Application *</span><span>@Html.DropDownListFor(model => model.ProductsID, Model.HowProductsAreUsedOptions, new { @class = "General", id = "General-1" })
@Html.DropDownListFor(model => model.ApplicationValue, Model.Options, "--Choose One--", new { id = "Option1", style = "display:none" })
</div>

这些可以在提交时重复最多9次.然而,这将在邮报中给我这个

FormID=8&Textbox1=This&Country=USA&ProductsID=1&ApplicationValue=2&
Textbox13=Is&Country=Canada&ProductsID=2&ApplicationValue=3&
Textbox14=A&Country=Canada&ProductsID=2&ApplicationValue=1&
Textbox15=Test&Country=Canada&ProductsID=1&ApplicationValue=8&
Textbox16=For&Country=Canada&ProductsID=2&ApplicationValue=1&
Textbox17=Stack&Country=USA&ProductsID=1&ApplicationValue=9&
Textbox18=Overflow&Country=USA&ProductsID=2&ApplicationValue=2

我怎样才能制作出这样的东西,以便将它们分成7个不同的价值集,而不是只给我一个?

最佳答案 如果我是你,我会创建一个强类型视图模型来表示您的数据.

一个表示具有其中属性的每个项目.

public class FooModel
{
    public string Text { get; set; }
    public string Country { get;set;}
    public int ProductsID { get; set; }
    public int ApplicationValue { get; set; }
}

然后创建一个模型来保存它们并代表它们

public class FooViewModel
{
   public List<FooModel> Foos { get; set; }
}

然后,您可以从控制器返回FooViewModel的实例.

在视图中,您使用集合的名称索引,如下所示:

@for (var i = 0; i < Model.Foos.Count; i++) 
 {
      ...
      @Html.TextBoxFor(model => Model[i].Text)
      @Html.DropDownListFor(model => Model[i]Country, ViewData["CountryOptions"] as SelectList,"Select")
      @Html.HiddenFor(model => Model[i].ProductsID)
      ...
 }

HiddenFor’s也将发布这些价值观.

现在,在您的操作中,您只需要更改参数以获取FooViewModel的实例,它们都将填充服务器端.

有关它的更多信息,请参见此处:

http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx/

点赞