Я использую стандартную проверку с MVC, с моим беглым nHibernate
[DisplayName("Product Name")]
[Required(ErrorMessage = "Product Name Required")]
public virtual string ProductName { get; set; }
[DataType(DataType.MultilineText)]
public virtual string Description { get; set; }
[DataType(DataType.Currency)]
[Required(ErrorMessage = "Price Required")]
public virtual decimal Price { get; set; }
[Required(ErrorMessage = "Quantity Required")]
[Range(0, 100000, ErrorMessage = "Must be postive number less then 100000")]
public virtual int Quantity { get; set; }
public virtual bool Live { get; set; }
public virtual ICollection<Attribute> Attribute { get; set; }
public virtual ICollection<Images> Images { get; set; }
Это то, что составляет мой класс "Product" ... по какой-то причине имя не проверяется как обязательное полено такие вещи, как количество и цена делают.
В представлении есть эти значения
<tr>
<td>
<%= Html.LabelFor(model => model.ProductName)%>
</td>
<td>
<%= Html.TextBoxFor(model => model.ProductName, new { @class = "txt" })%>
<%= Html.ValidationMessageFor(model => model.ProductName)%>
</td>
</tr>
, и этот бит работает нормально
<tr>
<td>
<%= Html.LabelFor(model => model.Price) %>
</td>
<td>
<%= Html.TextBoxFor(model => model.Price, String.Format("{0:F}", Model.Price)) %>
<%= Html.ValidationMessageFor(model => model.Price) %>
</td>
</tr>
И это контроллер, который запрашивается
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult AddProduct(Product NewProduct)
{
if (ModelState.IsValid)
{
var ProductRepository = GetRepository<Product>();
ProductRepository.Add(NewProduct);
return Redirect("/");
}
return View(NewProduct);
}