ASP.NET MVC 3を使用していて、View Modelの大部分が読み取り専用である複数のページがあります。例えば、フィールドは、このようなようなものだ:ASP.NET MVC 3 - ビュー内のモデルを処理するためのベストプラクティス
<div class="display-label">My Field</div>
<div class="display-field">@Model.MyField</div>
私は、ユーザーがそのようないくつかの検証テキストで入力しなければならない分野があります:ユーザーがフォームを送信すると、それは私に当たると
@Html.LabelFor(model => model.Verification)
@Html.PasswordFor(model => model.Verification)
をコントローラの場合、ViewModelのフィールドは検証フィールドを除くすべてnullです。
@Html.HiddenFor(model => model.MyField)
しかし、これは本当に速い醜い取得します。私はこの問題を回避得ている方法は、これまで、そのようなようないくつかのHiddenForフィールドを持つことです。ビューの状態でモデルを処理するためのより良い方法があるので、フォーム提出のPOST中に、私はすべてのフィールドを取得できますか?これは、POST中に検証テキストが一致しない場合に重要で、ビューモデルをデータベースから再取得せずに返す必要があります。
ありがとうございます。
あなたはHtml.AntiForgeryToken() '@'ヘルパーを使用して、セキュリティ上の問題を回避することはできますか? – Brandon
私はそれを疑う。私はAntiForgeryTokenの機能についてあまり知らないが、ほとんどの場合、ユーザーはページのソースを見て、それが動作するために必要なトークンを確認することができます。偽造トークンは、クロスサイトスクリプティング攻撃のためのものであり、価値の保護のためのものではありません。今では、フィールドが提供されるべきかどうかを知る方法があります。セキュアであることが必要なものはサーバー側で処理する必要があり、セキュリティのためにクライアント側の機能に頼ることはできません – KallDrexx
コントローラでオブジェクトインスタンスを再ロードするだけです。 – Brandon