我正在使用 ASP.NET MVC (1.0)、Spark View Engine (1.0) 和 SubSonic (3.0.0.3)。
我无法让“编辑”视图正常工作。因此,在我的控制器中,我有以下显示编辑表单视图的控制器操作:
[AcceptVerbs(HttpVerbs.Get)]
public virtual ActionResult Edit(string name)
{
var plot = Plot.SingleOrDefault(p => p.UserID == LoggedInUser.ID && p.UrlFriendlyName == name);
// ViewData["plot"] = plot;
return View(plot);
}
该视图上的表单回传到以下控制器操作:
[AcceptVerbs(HttpVerbs.Post)]
public virtual ActionResult Edit(Plot plot)
{
var validator = new PlotValidator();
try
{
var results = validator.Validate(plot);
if (!results.IsValid)
{
...
}
}
}
我遇到的问题是,第一个控制器操作实际上并没有使用提交给它的 Plot 对象的值填充表单。我可以让它填充表单的唯一方法是将 Plot 添加到 ViewData:
ViewData["plot"] = plot;
这填充了编辑表单,但是当我编辑值并将其提交回上面列出的第二个控制器操作时,它只是发回,基本上是一个带有新值的新图,而不是发送到带有更新值的编辑表单的图.
我确定我可能只是错过了一些简单的东西,但我似乎无法弄清楚它是什么。我表单上的所有字段都有以“plot”为前缀的 ID。
任何人都知道/看到我做错了什么?谢谢。