我没有任何其他方式来描述它,然后我在标题中是如何做到的。
我有一个看起来像这样的视图模型:
public class CreateArtistModel
{
public IEnumerable<SelectListItem> Cultures { get; set; }
public IEnumerable<SelectListItem> Products { get; set; }
public Artists Artist { get; internal set; }
/// <summary>
/// Default constructor
/// </summary>
public CreateArtistModel() { }
/// <summary>
/// Non-default constructor with 1 parameter, culturelist
/// </summary>
/// <param name="cultures">List that can contain all the possible cultures.</param>
/// <param name="products">List that can contain all possible products.</param>
public CreateArtistModel(IEnumerable<SelectListItem> cultures, IEnumerable<SelectListItem> products) { Cultures = cultures; Products = products; }
/// <summary>
/// Non-default constructor that can have 1 parameter, artist
/// </summary>
/// <param name="artist">The artist with its various properties</param>
public CreateArtistModel(Artists artist) { Artist = artist; }
/// <summary>
/// Non-default constructor that can have 2 parameter, a list cultureList and an atist
/// </summary>
/// <param name="cultures">List that can contain all the possible cultures.</param>
/// <param name="products">List that can contain all possible products.</param>
/// <param name="artist">The artist with its various properties</param>
public CreateArtistModel(IEnumerable<SelectListItem> cultures, IEnumerable<SelectListItem> products, Artists artist)
{
Cultures = cultures;
Products = products;
Artist = artist;
}
[Required(ErrorMessage = "The artist's first name is required")]
public string firstname { get; set; }
[Required(ErrorMessage = "The artist's last name is required")]
public string lastname { get; set; }
public Nullable<int> dateOfBirth { get; set; }
public Nullable<int> dateOfDeath { get; set; }
[Required(ErrorMessage = "The artist's speciality is required")]
public string speciality { get; set; }
public string placeOfBirth { get; set; }
}
然后我的视图使用如下属性:
@model ArtWebShop.Areas.Admin.Models.CreateArtistModel
@Html.EditorFor(model => model.firstname)
@Html.ValidationMessageFor(model => model.firstname)
然后在我的控制器中我像这样保存它:
[HttpPost]
public ActionResult Create(Artists artist)
{
if (!ModelState.IsValid)
{
return View(CreateArtistWithListOfProductsAndcultures(artist));
}
if (_unitOfWork != null)
{
_unitOfWork.ArtistsRepository.Create(artist);
_unitOfWork.Save();
}
return RedirectToAction("Index", "Overview", new { area = "Admin" });
}
那行得通!但我不确定为什么...
我想确切地了解为什么会这样。为什么我的视图模型中的属性会自动链接到艺术家模型?