Cześć wszystkim, za pośrednictwem Code First wymodelowałem model domeny.
public class Category
{
public int CategoryID { get; set; }
public string CategoryName { get; set; }
public virtual ICollection<Product> product { get; set; }
}
Wyczytałem również, iż stosowanie walidacji tj. [Required], [Display(Name = "Email")], [EmailAddress] itp. NIE POWINNY znajdować się w modelu tylko w viewModelu! Idąc tym tropem stworzyłem ViewModel.
public class CategoryViewModel
{
[Required]
public string CategoryName { get; set; }
}
Następnie stworzyłem widok (z formularzem) i kontroler. Kontroler wygląda następująco.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(CategoryViewModel category)
{
if (ModelState.IsValid)
{
if (category.CategoryName != null)
{
_category.CreateCat(category); // niezgodność typów
_category.Save();
return RedirectToAction("Index", "Category");
}
}
return View(category);
}
Problemem jest to, że w przypadku metody Create, stosując typu CategoryViewModel, właśiwość ModelSate.isValid zadziała prawidłowo, jednak jestem zmuszony do zmapowania obiektu dostarczonego z formularza "category" do obiektu biznesowego wymaganego w metodzie CreateCat jakim jest Category. Tego typu sprawą zajmują się tzw. Mapery. Jednak jeżeli moim parametrem były by obiekt modelu domeny z ADNOTACJAMI WALIDACJI czyli: ** Category category** nie musiałbym korzystać z maperów!!! Czym to jest spowodowane i czy na pewno nie wolno używać adnotacji walidacji w modelu?? Prosiłbym o sensowne odpowiedzi.
Pozdrawiam.