何らかの理由で、モデル内の配列内のプリミティブプロパティをリモートで検証しようとすると、プロパティの値がパラメーターとして渡されません。
たとえば、リモート検証メソッド(UniqueItemNo)が呼び出されると、文字列パラメーター「id」は常にnullになります。ItemNumberではなくCartNumberで検証を実行した場合、パラメーターは正しく渡されます。
コントローラ
public class HomeController : Controller
{
public ActionResult Index()
{
CartModel cart = new CartModel();
cart.Items.Add(new ItemModel() { ItemNumber = "12345" });
return View(cart);
}
[HttpPost]
public JsonResult UniqueItemNo(string id)
{
/** Do Work **/
return null;
}
}
モデル
public class ItemModel
{
[Remote("UniqueItemNo", "Home", HttpMethod="POST")]
public string ItemNumber { get; set; }
}
public class CartModel
{
public CartModel()
{
Items = new List<ItemModel>();
}
public List<ItemModel> Items { get; set; }
public string CartNumber { get; set; }
}
意見
@{
ViewBag.Title = "Home Page";
}
<h2>@ViewBag.Message</h2>
@using(Html.BeginForm()) {
<p>
@for(int i = 0; i < Model.Items.Count; i++)
{
@Html.TextBoxFor(m => m.Items[i].ItemNumber);
@Html.ValidationMessageFor(m => m.Items[i].ItemNumber);
}
</p>
}