同じ入力ボックスが何度も追加されたページがあります。
@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; }
}
しかし、最初のフィールドのデータしか見ることができません。また、私は試しました:
@Html.TextBoxFor(m => m.Product[0])
@Html.TextBoxFor(m => m.Product[1])
@Html.TextBoxFor(m => m.Product[2])
しかし、リモート検証は機能しないため、ここで少し困惑しています。私が達成したい本質的なことは、関数へのリモート呼び出しを介して検証できるように、製品のリストをショップに送信することです。商品を独自の public クラスに入れてみましたが、そのクラス内からショップ名にアクセスできませんでした。
これは私が使用しようとしているコントローラーアクションです:
public JsonResult ProductExists(List<String> Product, string ShopName)
これを解決する方法はありますか?
編集
この Semi は機能しますが、リモート検証はまだ 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>
}