2017-03-02 39 views
-2

投稿時にデータを投稿すると、そのモデルはコントローラ内でヌルです。私はすでにこの質問が何度も尋ねられることを知っています。根本的な原因は、モデルのプロパティ名とコントローラのアクションパラメータで使用する同じ名前との間の名前の衝突です。しかし、これは私のシナリオでは当てはまりません。なぜモデルが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=""> 
+1

あなたのフォームはあなたの入力の後に来ます。あなたの入力はフォームに同封する必要があります。 – Fran

+1

*すべてのコントロールは、送信ボタンだけでなく、 'Html.BeginForm()'の中に入る必要があります。 –

+1

なぜコントロールをフォームタグに入れないのですか?この方法でクラスオブジェクトのプロパティを設定することはありません。 –

答えて

1

すべての入力要素がフォームタグの外にあるように見えます。代わりにこれを試してみてください:フォームタグの外の要素と

<div> 
@using (Html.BeginForm()) 
{ 
    <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> 

    <input type="submit" value="Save Procedure" id="btnPost" /> 
} 
</div> 

を、彼らが提出されることはありません飽きません。

希望に役立ちます。

0

あなたのフォームはあなたのすべての入力の後に来ます。あなたの入力は、フォームに同封する必要があります。

@using (Html.BeginForm()) 
{  
    <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><input type="submit" value="Save Procedure" id="btnPost" /></div>  
} 
関連する問題