2017-01-17 6 views
0

私はCreateOrEditビューでTextBoxFor次き:だから私はこのように私のコードを変更しPartialViewを柔軟にするにはどうすればよいですか?

Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions.

:私は次のエラーを取得するので、私はそのようにそれを使用することはできません。もちろん、

@Html.TextBoxFor(model => model.Date.Value.ToShortDateString(), 
      new {@readonly = true, @class = "form-control"}) 

を:

@{ 
    var m = Model.Date.Value.ToShortDateString(); 
    @Html.TextBoxFor(model => m, new {@readonly = true, @class = "form-control"}) 
    @Html.ValidationMessageFor(model => model.Date) 
} 

私はすでに上記のエラーは表示されず、編集アクションでも機能します。次の行そのスタンスは編集アクションメソッドでは正しいが作成アクションメソッドではありません。

var m = Model.Date.Value.ToShortDateString(); 

私の問題は、私はモデルのインスタンスを持っていないので、まだ私は例外を取得、私が使用したときにアクションメソッドを作成しています。この問題を解決するにはどうすればよいですか?

+0

'@ Html.TextBoxFor(M => m.Date、 "{0:D}"、{、@class = "フォームコントロール" @ReadOnly = "読み取り専用"}新しい)' –

+1

しかし、なぜとにかく 'Create()'メソッドのビューにモデルのデフォルトインスタンスを渡さないのですか? –

+0

@StephenMuecke ToShortDateStringは単なる例でした。正確にここで拡張メソッドを使いたいと思います。 –

答えて

1

Create.cshtmlビューでは、モデルをビューに渡さないことになります。これは常に実行する必要があります。 Create()メソッドの場合、モデルの新しいインスタンスを初期化し、GETメソッドのビューに渡すだけです。

public ActionResult Create() 
{ 
    var model = new yourModel(); 
    return View(model); 
} 
関連する問題