我刚刚开始使用asp .NET MVC 2应用程序,我偶然发现了一个问题。我在更新表格时遇到问题。调试器不报告任何错误,它只是没有做任何事情......我希望有些人可以帮助我。感谢您的时间。 这是我的控制器代码......
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();
}
}
这是我的观点...
<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>
答案 0 :(得分:0)
猜猜你得到了一个例外。尝试在Try catch语句中抛出异常
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();
}
因为我认为这是潜在的东西。
答案 1 :(得分:0)
我会冒险猜测,并且在您尝试触发_entities
方法时,您的ApplyPropertyChanges
变量为空。
这会导致
对象引用未设置为 对象的实例
错误抛出。
答案 2 :(得分:0)
试试这个
[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();
}
}