У меня есть два класса
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 - нет. В чём может быть проблема ?
Виртуальный выделенный сервер (VDS) становится отличным выбором
Написал простенький код, который при вводе числа должен выдать на 10 большекомпилирую, нажимая F5
Помогите сделать так чтобы при нажатии на кнопку удалялась выделенная строчка в DataGridView из базы данных