The Return Ansicht (Modell) liefert Ihnen Fehler, weil Sie das Modell mit den Werten in der post-Methode und den Modelldaten nicht füllen für das Drop-Down-leer. Geben Sie die Get-Methode an, um zu erläutern, wie Sie die Anzeige des Fehlers verwalten können. Um gezeigt werden, um die Fehler sollten Sie verwenden:
[HttpPost]
public ActionResult form_edit(FormModels model)
{
if(ModelState.IsValid())
{
--- operations
return Redirect("OtherAction", "SomeController");
}
// here you can use a little trick
//fill the model property that holds the information for the dropdown with the data
// you haven't provided the get method but it should look something like this
model.Countries = ... some data goes here;
model.dd_value = ... some other data;
model.dd_text = ... other data;
ModelState.AddModelError("", "adfdghdghgdhgdhdgda");
return View(model);
}
und dann in der Ansicht nur verwenden:
@model mvc_cs.Models.FormModels
@using ctrlr = mvc_cs.Controllers.FormController
@using (Html.BeginForm("form_edit", "Form", FormMethod.Post))
{
<table>
<tr>
<td>
@Html.ValidationSummary(true)
</td>
</tr>
<tr>
<th>
@Html.DisplayNameFor(model => model.content_name)
@Html.DropDownListFor(x => x.selectedvalue, new SelectList(Model.Countries, Model.dd_value, Model.dd_text), "-- Select Product--")
</th>
</tr>
</table>
<table>
<tr>
<td>
<input type="submit" value="Submit" />
</td>
</tr>
</table>
}
Dies sollte in Ordnung arbeiten.
Wenn Sie nur RedirectToAction verwenden, wird es Sie auf die Get-Methode umleiten -> Sie werden keinen Fehler haben, aber die Ansicht wird nur neu geladen und kein Fehler würde angezeigt werden.
umgekehrt ist, dass Sie den Fehler nicht durch ModelState.AddError passieren kann, aber mit Viewdata [ „Fehler“] wie folgt aus:
[HttpPost]
public ActionResult form_edit(FormModels model)
{
TempData["error"] = "someErrorMessage";
return RedirectToAction("form_Post", "Form");
}
[HttpGet]
public ActionResult form_edit()
{
do stuff here ----
ViewData["error"] = TempData["error"];
return View();
}
@model mvc_cs.Models.FormModels
@using ctrlr = mvc_cs.Controllers.FormController
@using (Html.BeginForm("form_edit", "Form", FormMethod.Post))
{
<table>
<tr>
<td>
<div>@ViewData["error"]</div>
</td>
</tr>
<tr>
<th>
@Html.DisplayNameFor(model => model.content_name)
@Html.DropDownListFor(x => x.selectedvalue, new SelectList(Model.Countries, Model.dd_value, Model.dd_text), "-- Select Product--")
</th>
</tr>
</table>
<table>
<tr>
<td>
<input type="submit" value="Submit" />
</td>
</tr>
</table>
}
sind Sie sicher, die Umleitung zurückkehren möchten und sehen nicht? – Grundy
versuchen 'return View (Modell)' statt 'Rückkehr RedirectToAction ("Form_edit", "Form");' – Grundy
Ya, ich brauche Rückkehr RedirectToAction ("Form_edit", "Form"); – Ramesh