投稿時にデータを投稿すると、そのモデルはコントローラ内でヌルです。私はすでにこの質問が何度も尋ねられることを知っています。根本的な原因は、モデルのプロパティ名とコントローラのアクションパラメータで使用する同じ名前との間の名前の衝突です。しかし、これは私のシナリオでは当てはまりません。なぜモデルがnullであるのか分かりません。どんな助けもありがとうございます。以下のコードでは、 "pm"変数はnullです。HTTP中にMVCモデルがコントローラ内でnullです。Post ASP.NET
ビュー:
<div> @Html.LabelFor(model =>model.procedureName)</div>
<div> @Html.ValidationMessageFor(model => model.procedureName)</div>
<div>@Html.TextBoxFor(model => model.procedureName)</div>
<div> @Html.ValidationMessageFor(model => model.ServiceDate)</div>
<div> @Html.TextBoxFor(model =>model.ServiceDate) </div>
<div> @using (Html.BeginForm())
{
<input type="submit" value="Save Procedure" id="btnPost" />
}
</div>
モデル:
public partial class MemberProcedure
{
public int procedureid { get; set; }
[Display(Name = "Name")]
[Required(ErrorMessage = "Please select a name")]
public string procedureName { get; set; }
public string updatedbyUserName { get; set; }
public Nullable<System.DateTime> LastUpdatetime { get; set; }
public Nullable<System.DateTime> Createtime { get; set; }
[Required(ErrorMessage = "Please select a service date")]
public Nullable<System.DateTime> ServiceDate { get; set; }
}
コントローラのアクションメソッド:
[HttpPost]
public ActionResult Procedure(MemberProcedure pm)
{
if (ModelState.IsValid)
{
savedata....
}
return View(pm);
}
HTML:
<input id="procedureName" name="procedureName" type="text" value="">
<input id="ServiceDate" name="ServiceDate" type="text" value="">
あなたのフォームはあなたの入力の後に来ます。あなたの入力はフォームに同封する必要があります。 – Fran
*すべてのコントロールは、送信ボタンだけでなく、 'Html.BeginForm()'の中に入る必要があります。 –
なぜコントロールをフォームタグに入れないのですか?この方法でクラスオブジェクトのプロパティを設定することはありません。 –