2016-06-17 7 views
0

投稿後投稿中モデルがnullです 私のモデルはvwLogのリストであるプロパティを持っています。鑑みMVC 5モデルでフォームを送信するとコントローラーポストの方法でヌルです

public class CreateLogViewModel 
{ 
    public List<vwLog> LogData; 
} 

Iは、そのモデルを使用し、テキストコントロールで値を割り当てることforeachループを使用

@model CreateLogViewModel 

@using (Html.BeginForm("CreateLog", "Log", FormMethod.Post, new { @class = "form-horizontal", role = "form" })) 
{ 
    foreach (var item in Model.LogData) 
    { 
     <table>    
      <tr> 
       <td> 
        @Html.HiddenFor(modelItem => item.LogID) 
        @Html.TextBoxFor(modelItem => item.AgencyBillingCode) 
       </td> 
       <td> 
        @Html.TextBoxFor(modelItem => item.LicenseNumber) 
       </td> 
      </tr> 
     </table> 
    } 
    <div class="col-xs-12" align="center"> 
     <input class="btn btn-default" type="submit" name="Submit" value="Save" id="Submit"> 
    </div> 
} 

するコントローラは、私はLOGDATAオブジェクトた値を代入していGetメソッドで

ありますvwlogのコレクションです。

public ActionResult CreateLog(CreateLogViewModel model) 
{ 
    model.LogData = GetDate(); 
    return View(model); 
} 

私は画面上のリストの値をいくつか更新し、それを保存しようとしますが、私はmodel.LogDataをPostに入れています。

[HttpPost] 
public ActionResult CreateLog(CreateLogViewModel model, string submit) 
{ 
    if (model.LogData != null) 
    { 
     do this... 
    } 
} 

私は画面上のリストの値をいくつか更新し、それを保存しようとしますが、私はmodel.LogDataをPostに入れています。モデルはnullではありませんが、コレクションオブジェクトはnullです。 私が間違っている場所を教えてください。

+0

ない質問に関連しますが、セキュリティのために、私は強いHtml.AntiForgeryToken(@使用することをお勧め)ビュー内と[ValidateAntiForgeryToken()]を使用して、コントローラにトークンを認証 – Chad

+0

(参照してください。 )とモデルにはプロパティが含まれていなければならず、NightOwl888が示しているようにフィールドは含まれていない必要があります。 –

答えて

0

MVCモデルバインダーは、クラスのフィールドでは動作しません:

public class CreateLogViewModel 
{ 
    // This is a field 
    public List<vwLog> LogData; 
} 

あなた必見使用特性:

public class CreateLogViewModel 
{ 
    // This is a property 
    public List<vwLog> LogData { get; set; } 
} 

を注:また、あなたのvwLog種類を確認する必要がありますそれが動作するための一般的な読み書きプロパティを持っています。あなたは `foreach`ループを使用することはできません

+0

ねえ、ありがとう...それは私がプロパティに変換することを含むいくつかの変更を行いました。だからモデルpublicリスト LogData {get;セット; }とコントローラは - リスト LogList =新しいリスト(); LogServiceサービス=新しいLogService(); LogList = getdata()model.LogData = LogList; – Reena

関連する問題