MVC TextBoxfor:初期値と更新値
この例は、asp.net MVCアプリケーションで一般的な問題を示しています。ここでは、更新された値の代わりに予期しない初期値を表示します。
TextBoxFor
MVCアクションを調べて、シナリオを表示しましょう
コントローラーのアクション:
ビュー:
<code class="language-csharp">[HttpPost] public ActionResult SomeInformation() { var test1 = new DataSites { Latitude = "LATITUDE2" }; return RedirectToAction("Index", test1); } [HttpPost] public ActionResult Index(DataSites dataSiteList) { if (dataSiteList.Latitude != null) { var test = new DataSites { Latitude = "LATITUDE" }; return View(test); } return View(dataSiteList); }</code>
モデル:
<code class="language-csharp">@model miniproj2.Models.DataSites <p> @Html.TextBoxFor(x => x.Latitude) </p></code>
問題:
<code class="language-csharp">public class DataSites { public string Latitude { get; set; } }</code>
説明:/Home/SomeInformation
Index
モデルを使用すると、
に入力します。 アクションは新しい値(「緯度」)を割り当てようとしていますが、既存の値が優先されます。
ソリューション:RedirectToAction
ModelState
2つのアプローチが効果的にこれに対処します:Index
ModelState
clear modelState:アクションで新しい値を割り当てる前に、
をクリアします:
ModelState
新しいIndex
アクションで新しい<code class="language-csharp">[HttpPost] public ActionResult Index(DataSites dataSiteList) { ModelState.Clear(); // Add this line if (dataSiteList.Latitude != null) { var test = new DataSites { Latitude = "LATITUDE" }; return View(test); } return View(dataSiteList); }</code>
DataSites
以上がMVCでのリダイレクトの後、「Latitude2」ではなく「Latitude2」をテキストボックスに表示するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。