2

ViewModelを使用しているときに値がコントローラに返されています。MVC ViewModelからArgumentNullExceptionが返される

わかりやすくするために、元のフィールドがさらに多くなっているところで、以下のコードを簡略化しました。

ページが読み込まれると、非表示フィールドの値が期待どおりになります。しかし、フォームが送信されると、フィールドの値は送信されず、代わりにArgumentNullExceptionが返されます。

私が間違っていることについて助言してもらえますか?

ビュー

@model Project.Models.SCView 
@using (Html.BeginForm("ScorecardEdit")) 
{ 
    @Html.AntiForgeryToken() 
    @Html.ValidationSummary(true) 

    @Html.HiddenFor(model => model.FV.ID) 


    <input type="submit" value="Save" /> 

} 

モデル

public class FixView 
{ 
    public int ID { get; set; } 

    [DisplayFormat(DataFormatString = "{0:ddd dd/MM/yyyy}")] 
    public DateTime MatchDate { get; set; } 

} 

public class SCView 
{ 
    public FixView FV { get; set; } 

    public SCView() 
    { 
     this.FV = new FixView(); 
    } 
} 

コントローラ

[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult ScorecardEdit(SCView ReturnSC) 
{ 
} 
+4

あなたはSCViewをサーバーに投稿していません。あなたは整数を投稿しています。 – mason

+0

@masonありがとうございますが、分かりません。この男(http://stackoverflow.com/questions/27191691/viewmodel-returns-null-on-postback-mvc-5)はエラーなしでプロパティを更新するために同じフォーマットを使用することができました。 – Xtravia9

+0

ビューに日付入力を追加し、 'SCView'の代わりに' FixView'を受け入れるようにアクションメソッドを変更してください。 – mason

答えて

2

あなたはヲする必要があります持っているコードHiddenFor()ヘルパーとして期待通りMVCはあなたのFV.IDプロパティをマッピングすることができるはずとしてrkingそれをマッピング処理するために、適切な名前を生成します:あなたが提供する同じコードを使用して

enter image description here

を、デバッガは後に次のことを実証しましたフォームを送信:あなたは、いくつかの他のプロパティ、コレクションを持っているDropDownListFor()ヘルパーを使用する可能性のコレクションベースのものを持っているよう

enter image description here

ここでの問題は鳴りWHI chはサーバーにはポストされませんので、モデルを使用しようとするとそのヘルパーの1つを作成しなければなりません。ArgumentNullExceptionです。

+0

ありがとうございます。 FixViewに[DisplayName( "")]という別のプロパティがありました。なぜこの問題が起こるのか分かりません。 – Xtravia9

関連する問題