У меня есть два класса
public class Owner
{
[HiddenInput(DisplayValue = false)]
public int Id { get; set; }
[Display(Name = "Имя")]
[Required]
public string Name { get; set; }
[Display(Name = "Почта")]
[Required]
public string Email { get; set; }
public ICollection<HomeRepair> HomeRepairs { get; set; }
public Owner()
{
HomeRepairs = new List<HomeRepair>();
}
...
}
public class HomeRepair
{
[HiddenInput(DisplayValue = false)]
public int Id { get; set; }
[Display(Name = "Адрес")]
[Required]
public string Address { get; set; }
public int? OwnerId { get; set; }
[Required]
public Owner Owner { get; set; }
...
}
Метод контроллера
[HttpGet]
public ActionResult Create()
{
SelectList owners = new SelectList(db.Owners, "Name", "Name");
ViewBag.Owners = owners;
return View();
}
[HttpPost]
public ActionResult Create(HomeRepair homeRepair, Owner owner)
{
if (ModelState.IsValid)
{
homeRepair.RepairStatus = "Ремонт запланирован";
db.HomeRepairs.Add(homeRepair);
foreach (var i in db.Owners)
{
if (i.Name == owner.Name)
{
i.HomeRepairs.Add(homeRepair);
}
}
db.SaveChanges();
return RedirectToAction("Index");
}
return View();
}
Представление
@model TestTask.Models.HomeRepair
@using TestTask.Models;
@{
ViewBag.Title = "Добавление дома";
}
<h2>Добавление дома</h2>
@using (Html.BeginForm())
{
<h4>Дом</h4>
<div class="editor-label"><b>@Html.DisplayNameFor(model => model.Address)</b></div>
<div class="editor-field">
@Html.EditorFor(model => model.Address)
@Html.ValidationMessageFor(model => model.Address, "", new { @class = "text-danger" })
</div>
<div class="editor-label"><b>@Html.DisplayNameFor(model => model.RepairStatus)</b></div>
<div class="editor-field">
Ремонт запланирован
</div>
<h4>Владелец</h4>
Owner owner = new Owner();
<div id="selectOwner" class="editor-label"><b>Выберите владельца</b></div>
<div id="selectOwnerDropDownList" class="editor-field">
@Html.DropDownList("Name", ViewBag.Owners as SelectList)
</div>
<p>
<a id="addNewOwner" class="addLink">Добавить нового владельца</a>
</p>
<div id="addOwner">
</div>
<p>
<input type="submit" value="Добавить" />
</p>
}
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
<script>
$('.addLink').one('click', function ()
{
$("#selectOwner").hide();
$("#selectOwnerDropDownList").hide();
$("#addNewOwner").hide();
var htmlAdd = "<div class='editor-label'><b>Имя</b></div>" +
"<div class='editor-field'>" +
"<input type='text' name ='owner.Name' value=''>" +
"<span class='field-validation-valid text-danger'" +
"data-valmsg-for='owner.Name' data-valmsg-replace='true'></span>" +
"</div>" +
"<div class='editor-label'><b>Email</b></div>" +
"<div class='editor-field'>" +
"<input type='text' name='owner.Email' value=''>" +
"<span class='field-validation-valid text-danger'" +
"data-valmsg-for='owner.Email' data-valmsg-replace='true'></span>" +
"</div>";
$('#addOwner').append(htmlAdd)
})
</script>
}
Вот сама форма:
После нажатия на "Добавить нового владельца":
И после нажатия на "Добавить" выскакивает ошибка:
Валидация полей HomeRepair отлично работает, а Owner - нет. В чём может быть проблема ?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Написал простенький код, который при вводе числа должен выдать на 10 большекомпилирую, нажимая F5
Помогите сделать так чтобы при нажатии на кнопку удалялась выделенная строчка в DataGridView из базы данных