В этом коде в представлении Edit
отображается правильный текст имени поставщика, но он не проверяется, когда я пустую его текстовое поле и нажмите «Сохранить». Поставщик является свойством модели Order, а VendorName является собственностью модели поставщика. Они связаны между собой. Моя форма не все вводится в одну таблицу, но также и на спутниковые таблицы.ASP.Net MvC framework, Html.ValidationMessage tag
<%= Html.TextBox("Vendor.VendorName")%>
<%= Html.ValidationMessage("Vendor.VendorName")%>
Почему валидация не происходит?
Это, кажется, работает, но это, кажется, как взломать ко мне:
using M = HelloUranus.Models
//...
namespace HelloUranus.Controllers
{
public class OrderDetailController : Controller
{
//...
private M.DBProxy db = new M.DBProxy();
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(int id, FormCollection collection)
{
//...
var orderDetail = db.GetOrderDetail(id);
//...
try
{
if (string.IsNullOrEmpty(Request.Form["Vendor.VendorName"]))
{
throw new Exception();
}
UpdateModel(orderDetail);
db.Save();
return RedirectToAction("Details", new {id = orderDetail.odID });
}
catch
{
ModelState.AddRuleViolations(orderDetail.GetRuleViolations());
return View(orderDetail);
}
//...
}
//...
}
ModelState.AddModelError автоматически устанавливает IsValid в false. –
Ты прав, моя ошибка. Я знал, что вам нужно помнить * что-то *, но что-то устанавливает ModelStateDictionary, чтобы повторно заполнить форму неверными данными, используя SetModelValue. Лемм отредактировал это. – JoshJordan
Где в рабочем процессе я бы выполнил ModelState.AddModelError ("Vendor.VendorName", "*")? Если это сделано в разделе try части «Сохранить» метода действия «Редактировать-Опубликовать», он выдает исключение, так как ModelState.IsValid становится ложным. – JonathanWolfson