2017-03-07 13 views
1

.netコアWebアプリケーションに複数のフィールドを持つモデルがあります。.netコアのモデルにテキスト領域が正しくバインドされていません

モデルは非表示の入力、テキスト入力、選択リスト、テキスト領域をレンダリングするタグヘルパーとしてaspを使用するビューにバインドされています。

問題..

サーバーへの投稿では、すべての入力がテキストエリアを除いて、正常にバインドされています。これは常にnullとして処理されます。

さらに奇妙なことに、ビューをレンダリングする前にテキスト領域プロパティに値を割り当てると、値が期待どおり(奇妙なビットではなく)テキスト領域に表示され、サーバーにポストされると値がポストされますバック。しかし、値を変更しようとすると、Chromeがネットワークツールに新しい値が投稿されたことが表示されているにもかかわらず、元のモデルバインドではまだ元の値が選択されます。

誰もこのような経験はありますか?私は馬鹿(もう一度)ですか?

以下の私のコードの部分集合:

は、ビューをレンダリングします

public IActionResult Review() 
{ 
    var requestVm = new Request(); 

    requestVm.AdditionalComments = "This was set in the model before rendering the view and should be overwritten."; 
    return View(requestVm); 
} 

HTML:

@model Models.Request 
<form asp-controller="Request" asp-action="Review" method="post" role="form" enctype="multipart/form-data" class="ui form review"> 
<textarea asp-for="AdditionalComments" class="AdditionalComments"></textarea> 
</form> 

POSTアクション:

[HttpPost] 
public IActionResult Review(Request requestVm) 
{ 
    // Some logic in here to save to db etc.. 
    return RedirectToAction("Thank_You"); 
} 

あなたが見ることができるように、何も特別なことはありません。

助けてください。

マークが

+0

要素を表示できますか? –

+0

私はそれを含む質問を編集しました... –

答えて

0

私はむしろ疑われるとして、コードと間違って、実際は何もしていた。..

代わりに、中くらいの早い段階からの部分を経由してページに追加されている同じ性質のためのレガシー隠し入力がありましたさまざまな設計変更の前にプロジェクト。モデルが単に見つかったプロパティの最初のインスタンスにバインドされていたので、ロード時の値の設定が行われていて、テキストの更新が機能していなかった理由を説明します。

これは単純なことでした。うまくいけば、これは同じような状況で自分自身を見つける他の人に役立つでしょう。

1

POSTメソッドにバインド(インクルード=文字列)の属性を使用して、行方不明ます1を含むすべてのプロパティ名を明記してください。これは、属性の使用方法を示しています。

[HttpPost] 
public IActionResult Review([Bind(Include = "AdditionalComments,other properties")] Request requestVm) 
{ 
    // Some logic in here to save to db etc.. 
    return RedirectToAction("Thank_You"); 
} 

これが役立たない場合は教えてください。

+0

提案に感謝します。バインドするためのかなりのプロパティがあり、本当に必要でないように感じたので、最後にそのルートを下ったことはありません... –

関連する問題