我想model
是一个 CustomerPart 实例,您或多或少地以这种方式定义了它。
public class CustomerPart
{
public int DeliveryRun_Id {get; set;}
public SelectList(or some IEnumerable) DeliveryRun_Id
}
我觉得您的代码没有更新数据库,因为您使用了错误的属性。model => model.TheAttributeYouWantToUpdate
在这种情况下,第一个 lambda 表达式应该是DeliveryRun_Id
。
所以应该是:
@Html.DropDownListFor(model => model.DeliveryRun_Id, Model.DeliveryRunList)
而不是
@Html.DropDownListFor(model => model.DeliveryRunList, Model.DeliveryRunList)
甚至不清楚控制器内的这段代码在哪里:
CustomerPart custPart = _custService.Get(custId);
if (DeliveryRunList.HasValue)
{
custPart.DeliveryRun_Id = DeliveryRunList.Value;
}
_custService.Update(custPart);
一种常见的方法是使用两种同名方法进行编辑,一种用于 HttpGet,一种用于 HttpPost,并@Html.BeginForm()
在 razor 视图中使用 a 进行更新,而不是更新控制器中的信息。
例子:
public ActionResult Edit(int id = 0) {
InvestmentFund Fund = InvestmentFundData.GetFund(id);
return Fund == null ? (ActionResult)HttpNotFound() : View(Fund);
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(InvestmentFund Fund)
{
if (ModelState.IsValid)
{
InvestmentFundData.Update(Fund);
return RedirectToAction("List");
}
return View(Fund);
}
在视图中
@using (Html.BeginForm()) {
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
@* For the attributes of your model *@
@Html.LabelFor ...
@Html.EditorFor ...
@Html.ValidationMessageFor ...
<input type="Submit"m value="Save">
}