mvc textboxfor: Nilai awal vs dikemas kini
Contoh ini menunjukkan isu biasa dalam aplikasi ASP.NET MVC di mana memaparkan nilai awal yang tidak dijangka dan bukannya nilai yang dikemas kini. TextBoxFor
mari kita periksa tindakan MVC dan melihat senario:
Tindakan pengawal:
<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>
selepas menavigasi ke (menetapkan latitud kepada "latitude2") dan mengalihkan ke , paparan memaparkan "latitude2" dan bukannya "latitud" yang diharapkan.
/Home/SomeInformation
Index
Penjelasan:
dengan model meluluskan data sebagai nilai laluan. Pengikat model lalai kemudian populates
dengan nilai ini ("latitude2"). Walaupun tindakan cuba memberikan nilai baru ("latitud"), nilai RedirectToAction
ModelState
Index
Penyelesaian: ModelState
Dua pendekatan dengan berkesan menangani ini:
ModelState Clear:
KosongkanModelState
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
Index
memilih antara penyelesaian ini bergantung kepada sama ada anda perlu mengakses data dari <code class="language-csharp">[HttpPost] public ActionResult Index(DataSites dataSiteList) { var test = new DataSites { Latitude = "LATITUDE" }; // No reliance on dataSiteList return View(test); }</code>
Atas ialah kandungan terperinci Kenapa TextBox untuk memaparkan 'latitude2' dan bukannya 'latitud' selepas pengalihan di MVC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!