Problem with updating data in asp .NET MVC 2 application
i am just getting started with asp .NET MVC 2 applications and i stumbled upon a problem. I'm having trouble updating my tables. The debugger doesn't report any error, it just doesn't do anything... I hope some can help me out. Thank you for your time. This is my controller code...
public ActionResult Edit(int id)
{
var supplierToEdit = (from c in _entities.SupplierSet
where c.SupplierId == id
select c).FirstOrDefault();
return View(supplierToEdit);
}
//
// POST: /Supplier/Edit/5
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(Supplier supplierToEdit)
{
if (!ModelState.IsValid)
return View();
try
{
var originalSupplier = (from c in _entities.SupplierSet
where c.SupplierId == supplierToEdit.SupplierId
select c).FirstOrDefault();
_entities.ApplyPropertyChanges(originalSupplier.EntityKey.EntitySetName, supplierToEdit);
_entities.SaveChanges();
// TODO: Add update logic here
return RedirectToAction("Index");
}
catch
{
return View();
}
}
This is my View ...
<h2>Edit</h2>
<% using (Html.BeginForm()) {%>
<%= Html.ValidationSummary(true) %>
<fieldset>
<legend>Fields</legend>
<div class="editor-label">
<%= Html.LabelFor(model => model.CompanyName) %>
</div>
<div class="editor-field">
<%= Html.TextBoxFor(model => model.CompanyName) %>
<%= Html.ValidationMessageFor(model => model.CompanyName) %>
</div>
<div class="editor-label">
<%= Html.LabelFor(model => model.ContactName) %>
</div>
<div class="editor-field">
<%= Html.TextBoxFor(model => model.ContactName) %>
<%= Html.ValidationMessageFor(model => model.ContactName) %>
</div>
<div class="editor-label">
<%= Html.LabelFor(model => model.ContactTitle) %>
</div>
<div class="editor-field">
<%= Html.TextBoxFor(model => model.ContactTitle) %>
<%= Html.ValidationMessageFor(model => model.ContactTitle) %>
</div>
<div class="editor-label">
<%= Html.LabelFor(model => model.Address) %>
</div>
<div class="editor-field">
<%= Html.TextBoxFor(model => model.Address) %>
<%= Html.ValidationMessageFor(model => model.Address) %>
</div>
<div class="editor-label">
<%= Html.LabelFor(model => model.City) %>
</div>
<div class="editor-field">
<%= Html.TextBoxFor(model => model.City) %>
<%= Html.ValidationMessageFor(model => model.City) %>
</div>
<div class="editor-label">
<%= Html.LabelFor(model => model.PostalCode) %>
</div>
<div class="editor-field">
<%= Html.TextBoxFor(model => model.PostalCode) %>
<%= Html.ValidationMessageFor(model => model.PostalCode) %>
</div>
<div class="editor-label">
<%= Html.LabelFor(model => model.Country) %>
</div>
<div class="editor-field">
<%= Html.TextBoxFor(model => model.Country) %>
<%= Html.ValidationMessageFor(model => model.Country) %>
</div>
<div class开发者_运维知识库="editor-label">
<%= Html.LabelFor(model => model.Telephone) %>
</div>
<div class="editor-field">
<%= Html.TextBoxFor(model => model.Telephone) %>
<%= Html.ValidationMessageFor(model => model.Telephone) %>
</div>
<div class="editor-label">
<%= Html.LabelFor(model => model.Fax) %>
</div>
<div class="editor-field">
<%= Html.TextBoxFor(model => model.Fax) %>
<%= Html.ValidationMessageFor(model => model.Fax) %>
</div>
<div class="editor-label">
<%= Html.LabelFor(model => model.HomePage) %>
</div>
<div class="editor-field">
<%= Html.TextBoxFor(model => model.HomePage) %>
<%= Html.ValidationMessageFor(model => model.HomePage) %>
</div>
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
<% } %>
<div>
<%= Html.ActionLink("Back to List", "Index") %>
</div>
Guess you are getting an exception. Try to throw the exeception in the Try catch statement
try
{
var originalSupplier = (from c in _entities.SupplierSet
where c.SupplierId == supplierToEdit.SupplierId
select c).FirstOrDefault();
_entities.ApplyPropertyChanges(originalSupplier.EntityKey.EntitySetName, supplierToEdit);
_entities.SaveChanges();
// TODO: Add update logic here
return RedirectToAction("Index");
}
catch(Exception ex)
{
throw ex;
return View();
}
Because i think its something underlaying.
I'll Hazard a guess and say that your _entities
variable is null at the time you're trying to fire off the ApplyPropertyChanges
method.
This would cause a
Object reference not set to an instance of an object
error to be thrown.
try this
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(Supplier supplierToEdit)
{
if (!ModelState.IsValid)
return View();
try
{
var originalSupplier = (from c in _entities.SupplierSet
where c.SupplierId == supplierToEdit.SupplierId
select c).FirstOrDefault();
_entities.UpdateModel(originalSupplier);
_entities.ApplyPropertyChanges(originalSupplier.EntityKey.EntitySetName, supplierToEdit);
_entities.SaveChanges();
// TODO: Add update logic here
return RedirectToAction("Index");
}
catch
{
return View();
}
}
精彩评论