2009-01-06 131 views
2

如果需要回发到原始控制器进行渲染和重定向的同一控制器,是否认为是更好的做法?或者,如果从视图跳转到不同的控制器,它是否一样?Asp.net mvc:从视图回来

回答

3

我在控制器中创建两个重载操作,一个使用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 Wikipediablog entry by Stephen Walther

还有其他方法可以使用FormCollection,例如一个简单参数列表或绑定到一个对象。请参阅article by ScottGu

2

我认为被调用的动作应该包含在该动作的相关控制器中。如果视图需要调用动作,它应该从相关的控制器调用它,而不一定是从其生成的控制器。

如果您有库存控制器,您不想定义与管理相关的操作,即使库存屏幕可能对其有管理操作(例如)。