@ Html.Textboxからの入力に基づいて更新アクションを使用して更新します。MVC4の@ Html.Textboxの検証
@using (Html.BeginForm("Update", "Shopping", new { UserID = Request.QueryString["UserID"] }, FormMethod.Post, new { id = "myForm" }))
{
@Html.ValidationSummary()
@Html.Hidden("id", @Request.QueryString["UserID"] as string)
@Html.Hidden("productid", item.ProductID as string)
@Html.TextBox("Quantity", item.Quantity)
@Html.ValidationMessage("Quantity", "*")
@Html.Hidden("unitrate", item.Rate)
<input type="submit" value="Update" />
}
と私のモデルクラスで
[Required(ErrorMessage = "Quantity is required.")]
[Display(Name = "Quantity")]
[Range(2, 100, ErrorMessage = "There is not enough inventory for the product to fulfill your order.")]
public int? Quantity { get; set; }
問題は、私はテキストボックスが空の場合、検証メッセージが届かないメートルです。 しかし、私は検証メッセージを取得しています@ Html.TextBoxFor
@Html.TextBoxFor(modelItem => item.Quantity)
@Html.ValidationMessageFor(modelitem => item.Quantity)
を使用する場合。私の更新アクションは機能していません。
ここには2つのオプションがあります。
1. @ Html.TextboxForでテキストボックス名 "qty"を渡す方法(または)@ Html.ValidationMessage()
任意の提案..
EDITを使用して)(@ Html.Textboxに検証メッセージを取得する方法
2: 私の更新アクションを
[HttpPost]
public ActionResult Update(string id, string productid, int Quantity, decimal unitrate)
{
if (ModelState.IsValid)
{
int _records = UpdatePrice(id, productid, Quantity, unitrate);
if (_records > 0)
{
return RedirectToAction("Index1", "Shopping", new { UserID = Request.QueryString["UserID"] });
}
else
{
ModelState.AddModelError("","Can Not Update");
}
}
return View("Index1");
}
これは非常に多くの方法で非常に間違っています。基本的にMVCのすべての規約を破っており、それが機能することを期待しています。 MVCでは、検証するプロパティと同じ名前のテキストボックスが必要です。テキストボックス 'Quantity'に名前を付けることによって、Html.TextBoxで検証メッセージを取得します。 –
テキストボックスにも正確な名前「数量」を入力してみました。しかし、検証メッセージは表示されません。代わりに、私はこのようなメッセージが表示されます。 "パラメータ辞書には、nullable型のパラメータ 'Quantity'のヌルエントリが含まれています。コントローラのメソッドには 'System.Int32'が含まれていません。 – kk1076
彼らが何であるかを知るのに十分な文脈を与えていない。 Quantityはビューモデルのネストされたオブジェクトにありますか? TextBoxForメソッドを使用するときは、レンダリング時にWebページのソースを表示し、テキストボックスのName属性を確認します。代わりに "item.Quantity"という名前を付けてください。 –