我有一个带有两种编辑方法的控制器(见下文)。当我提交视图时,quoteOption中未通过输入控件发回的任何属性都是空的。例如,在quoteOption中我有quoteOptionID - 我没有显示或可编辑。 quoteOptionToUpdate中该属性为空(设置为0)。如果我为QuoteOptionID添加一个文本框,那么它可以工作。
public ActionResult Edit(long id)
{
quoteOption = quoteService.GetQuoteOptionByID(id);
return View("Create",quoteOption);
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(QuoteOption quoteOptionToUpdate)
{
quoteService.UpdateQuoteOption(quoteOptionToUpdate); //quoteOptionID is null
return RedirectToAction("Index");
}
答案 0 :(得分:2)
在典型的应用程序中,由于Web的无状态,您需要来回传输字段值。例如,您可以简单地将值放在隐藏字段中。
<input type="hidden" name="QuoteOptionID" value="...." />
请注意,这会将ID公开给用户。
您还可以在服务器端存储某些会话信息并使用自定义模型绑定器,以便您的应用程序有效地知道用户上次做了什么,但我不建议这样做。
答案 1 :(得分:0)
如果您这样写,您将单独获取id(因为它只存在于查询字符串中而不是您的表单中)。
[HttpPost]
public ActionResult Edit(QuoteOption quoteOptionToUpdate, Long id)
在edit-method中,您可以将id分配给quoteOptionToUpdate:
quoteOptionToUpdate.Id = id;