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
}