Asp.net mvc 是否向模型列表添加多个项目?

Asp.net mvc 是否向模型列表添加多个项目?,asp.net-mvc,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 3,我在一个页面上多次添加了相同的输入框 @Html.TextBoxFor(m => m.Product) @Html.TextBoxFor(m => m.Product) @Html.TextBoxFor(m => m.Product) 如何将其绑定到模型 我试过: public class Shop { public string ShopName { get; set; } [Remote("ProductE

我在一个页面上多次添加了相同的输入框

@Html.TextBoxFor(m => m.Product)
@Html.TextBoxFor(m => m.Product)
@Html.TextBoxFor(m => m.Product)
如何将其绑定到模型

我试过:

public class Shop
    {            
        public string ShopName { get; set; }

        [Remote("ProductExists", "Account", AdditionalFields = "ShopName", ErrorMessage = "Product is already taken.")]
        public List<String> Product { get; set; }
} 
但是远程验证不起作用,所以我有点困惑。我想实现的基本功能是将产品列表发送到商店,以便通过远程调用功能对其进行验证。我试着将产品放在自己的公共类中,但是我无法从该类中访问商店名称

这是我尝试使用的控制器操作:

public JsonResult ProductExists(List<String> Product, string ShopName)
如果我能想出办法解决这个问题,我将不胜感激

编辑

此功能可以正常工作,但远程验证仍无法传递ShopName:

public class Shops
{
    [Required]
    public string ShopName { get; set; }
    public List<Products> Product { get; set; }
}


public class Products
{
    [Required]
    [Remote("ProductExists", "Home", AdditionalFields = "ShopName", ErrorMessage = "Product is already taken.")]
    public String Product { get; set; }
}
控制器操作:

public JsonResult ProductExists(List<String> Product, string ShopName)
    {

        return Json(true, JsonRequestBehavior.AllowGet);


    }
视图:

@model Shop.Models.Shops


@{
ViewBag.Title = "Shop";
}

<h2>Shop</h2>

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript">   </script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"    type="text/javascript"></script>

@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
    <legend>Shop</legend>

    <div class="editor-label">
        @Html.LabelFor(model => model.ShopName)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.ShopName)
        @Html.ValidationMessageFor(model => model.ShopName)
    </div>



    <div class="editor-field">
        @Html.EditorFor(model => model.Product[0])
        @Html.ValidationMessageFor(model => model.Product[0])
    </div>


    <div class="editor-field">
        @Html.EditorFor(model => model.Product[1])
        @Html.ValidationMessageFor(model => model.Product[1])
    </div>


    <div class="editor-field">
        @Html.EditorFor(model => model.Product[2])
        @Html.ValidationMessageFor(model => model.Product[2])
    </div>


        <input type="submit" value="Create" />

</fieldset>
}
看看下面的例子。我会像你们尝试的那个样,让产品成为一个独立的类。查看页面呈现的html代码,并检查ShopName文本框的字段名。我认为它应该是ShopName,如果是这样,您不需要更改AdditionalFields属性,如果不将其更改为呈现的名称

比如说:

public class Shop
{            
        public string ShopName { get; set; }

        public List<Products> Product { get; set; }
}


public class Products
{

        [Remote("ProductExists", "Account", AdditionalFields = "ShopName", ErrorMessage = "Product is already taken.")]
        public String Product { get; set; }
}
foreach(var item in Model.products)
{
   @Html.TextBoxFor(item => item.product) // not sure if the syntax is right 
}

文本框的数量是由控制器给出的数字,或者取决于用户想要添加的数量?取决于用户想要添加的数量!现在我只想举一个简单的例子,你能检查一下ShopName和Product文本框,看看名称是什么吗?另外,我认为在您的控制器操作中,应该是string Product而不是List ProductProduct\u 0\uuuuuu Product和Product\u 1\uuuuuu Product我尝试过这个方法,但我不确定ShopName值对Products类可见,因为它只是一直传递一个空值。几乎有效!我很确定[Remote]中有一个bug,因为我已经厌倦了一百万件事情,在第一项之后它总是返回空白。
foreach(var item in Model.products)
{
   @Html.TextBoxFor(item => item.product) // not sure if the syntax is right 
}