Asp.net mvc:从视图回来
答
我在控制器中创建两个重载操作,一个使用HTTP GET呈现输入表单,另一个使用HTTP POST处理表单发布。事情是这样的:
public ViewResult Foo()
{
return View();
}
[AcceptVerbs(HttpVerbs.Post)]
public ViewResult Foo(FormCollection form)
{
// process input
if (inputOK)
return RedirectToAction("Index");
return View();
}
这样做的好处这种方式是,如果有一个错误,认为被重新呈递任何错误和验证消息。如果成功,则会重定向到另一个操作,这样可以避免用户刷新页面时浏览器上的重复发布警告 - 请参阅Post/Redirect/Get on Wikipedia和blog entry by Stephen Walther。
还有其他方法可以使用FormCollection,例如一个简单参数列表或绑定到一个对象。请参阅article by ScottGu。
答
我认为被调用的动作应该包含在该动作的相关控制器中。如果视图需要调用动作,它应该从相关的控制器调用它,而不一定是从其生成的控制器。
如果您有库存控制器,您不想定义与管理相关的操作,即使库存屏幕可能对其有管理操作(例如)。