0

更新: Jacco の提案 (以下) により、これが修正されました。つまり、ModelState.Clear() はあなたの友達です。

次のような ActionResult を持つ ScheduleController というコントローラーがあります。

[HttpPost]
public ActionResult Create(ScheduledCall scheduledcall)

ScheduledCall モデル オブジェクトには、content というプロパティがあります。content プロパティの値を変更してモデルをビューに戻し、ユーザーがブラウザーで読み取れるようにしたいという状況があります。プロパティの値を変更するのは簡単ですが、ビューは新しい値を HTML ディスプレイにレンダリングしません。代わりに、ユーザーが送信したコンテンツが表示されます。

コントローラ アクションの例:

scheduledcall.Content = "Mark my words!";
ViewBag.message = scheduledcall.Content;
return View(scheduledcall);

ビューに @ViewBag.message を出力します (これは、scheduledcall.Content プロパティの値と一致するようにコントローラーで設定されています)。ビューの出力は "Mark my words!" ですが、コンテンツのテキスト領域 (@Html.TextAreaFor(model => model.Content)) には、"Mark my words!" ではなく、ユーザーが入力したテキストが表示されます。

ビューのテキスト領域に更新された値を表示するにはどうすればよいですか?

4

2 に答える 2

2

あなたの答えはここにあると思います

Html.TextBoxFor は、POST アクションで更新された値を表示しません

ModelState.Clear(); のいずれかです。または、モデルのコピーでうまくいくはずです。

MVC フレームワークのそれほど明白ではないコーナーの 1 つである、これにも一度遭遇しました。

よろしく、ジャッコ

于 2013-03-14T15:18:54.163 に答える
2

おそらくあなたが探している答えではありません。

POST からレンダリングされたビューを返す代わりに、Post/Redirect/Getパターンの使用を検討してください。

Post/Redirect/Get (PRG) は、フォームの送信の重複を防ぎ、ユーザー エージェント (ユーザー) にとってより直感的なインターフェイスを作成する Web 開発デザイン パターンです。PRG は、重複したフォーム送信を作成しない予測可能な方法でブックマークと更新ボタンを実装します。

于 2013-03-14T14:30:31.177 に答える