У меня настроено действие редактирования, которое не обновляет записи, но не выдает никаких исключений.Обновление работает, но изменения не отражены в базе данных.
Я использую EF и MVC3, у меня есть интерфейс, который определяет сохранение клиента
public interface ICustomerRepository
{
//allows a sequence of customers to be displayed
IQueryable<Customer> Customers { get; }
//saves edits to customer records
void SaveCustomer(Customer customer);
}
Затем моя реализация этого
public void SaveCustomer(Customer customer)
{
if (customer.CustomerId == 0)
{
context.Customers.Add(customer);
}
context.SaveChanges();
}
Затем в контроллере можно получитьи отправлять действия
public ViewResult Edit(int customerId)
{
Customer customer = repository.Customers.FirstOrDefault(c => c.CustomerId == customerId);
return View(customer);
}
[HttpPost]
public ActionResult Edit(Customer customer)
{
if (ModelState.IsValid)
{
repository.SaveCustomer(customer);
TempData["message"] = string.Format("{0} has been saved", customer.CustomerName);
return RedirectToAction("Index");
}
else
{
//there is something wrong with the data values
return View(customer);
}
}
Тогда, на мой взгляд, у меня есть
@model CustomerOrders.Domain.Entities.Customer
@{
ViewBag.Title = "Admin: Edit" + @Model.CustomerName;
Layout = "~/Views/Shared/_AdminLayout.cshtml";
}
<h1>Edit @Model.CustomerName</h1>
using (Html.BeginForm("Edit", "Admin"))
{
<div class="left-column">
<div class="editor">@Html.EditorFor(model => model.CustomerId)</div>
<div class="label-for">@Html.LabelFor(model => model.CustomerName)</div>
<div class="editor">@Html.EditorFor(model => model.CustomerName)</div>
@Html.ValidationMessageFor(model => model.CustomerName)
</div>
<div class="middle-column">
<div class="label-for">@Html.LabelFor(model => model.PrimaryContactName)</div>
<div class="editor">@Html.EditorFor(model => model.PrimaryContactName)</div>
<div class="label-for">@Html.LabelFor(model => model.PrimaryContactNo)</div>
<div class="editor">@Html.EditorFor(model => model.PrimaryContactNo)</div>
</div>
<div class="right-column">
<input type="submit" value="Save" />
@Html.ActionLink("Cancel and return to list", "Index")
</div>
}
У меня также есть метод create, связанный с тем же действием редактирования и представлением, который работает нормально.Не знаете, где я ошибаюсь, я новичок в MVC3 и не уверен, что моя правка редактирования верна?