Обычно, когда результат действия метода успешный, происходит перенаправление, возможно, это то, что вы хотите, особенно если ваш результат не является результатом json. Но если вы возвращаете ту же точку зрения после своего поста, вы делаете это неправильно. Если ModelState
действителен в сообщении, то есть если передано подтверждение (например, обязательные поля), и вы добавили сообщение об ошибке, выполнив ModelState.AddModelError(("", "Data successfully saved.")
, тогда вы делаете ModelState
в недопустимое состояние. Вот почему у вас красный цвет.
Теперь если вы действительно хотите, чтобы вернуть ту же точку зрения, то я полагаю, у вас есть что-то вроде:
[HttpPost]
public ActionResult YourActionMethod(YourModel model)
{
// some code goes here
ModelState.AddModelError(("", "Data successfully saved.")
return View(", model);
}
То, что вы должны иметь вместо этого что-то вроде этого:
[HttpPost]
public ActionResult YourActionMethod(YourModel model)
{
// some code goes here
ViewBag.SuccessMessage = "Data successfully saved.";
return View(", model);
}
Тогда на ваш взгляд что-то вроде:
@Html.ValidationSummary(true)
if (!string.IsNullOrWhiteSpace(ViewBag.SuccessMessage)) {
<div class="success-summary">
<p>@ViewBag.SuccessMessage</p>
</div>
}
Учтите, что вам не нужен дополнительный @
до if, этот код предполагает, что он находится в теге form
, используя @using
. А затем для css:
.success-summary {
color: #3366FF;
}
Фактически вы можете использовать ViewData или ViewBag. Чтобы узнать больше о различии двух вы можете visit this SO page.
UPDATE:
[HttpPost]
public ActionResult YourActionMethod(YourModel model)
{
//
If (ModelState.IsValid) {
@ViewBag.IsModelValid = true;
ModelState.AddModelError("", "Data successfully saved.");
return View(model);
}
ViewBag.SuccessMessage = "Data successfully saved.";
return View(", model);
}
Ваше мнение:
@Html.ValidationSummary(false, "", new { @class= (ViewBag.IsModelValid!=null && ViewBag.IsModelValid) ? "success-summary" : "" })
пинг набор кода .. где и г используя –