我在renderaction方面苦苦挣扎,问题在于它在 Controller 上调用了错误的action方法。
在我的“用户” Controller 上,有两种操作方法,称为“编辑”,一种用于获取,另一种用于发布请求:
public virtual ActionResult Edit(int id)
{
//return a view for editing the user
}
[AcceptVerbs(HttpVerbs.Post)]
public virtual ActionResult Edit(UserViewModel model)
{
//modify the user...
}
在我看来,我将其称为Renderaction,如下所示:
Html.RenderAction("Edit", "Users", new { id = 666});
现在的问题是我希望呈现GET操作方法。但是(也许是因为模型还包含一个称为ID的属性?),Renderaction而是调用了我的POST操作方法。
这样做的正确方法是什么?我正在使用ASP.NET MVC 3 RC,以防万一。
谢谢,
阿德里安
最佳答案
子 Action 使用其父 Action 的HTTP方法
问题是您的 View 是在执行回发操作后呈现的。 View 中的所有子操作渲染都使用相同的HTTP方法。因此,POST正在被复制到它们上。我不确定MVC3,但是在MVC2中没有内置的方法可以解决此问题。
因此,问题在于您希望将Edit()
操作呈现为POST View 上的GET。盒子外面。没门。
您当然可以通过提供自己的功能=类来实现。
关于asp.net-mvc - RenderAction调用错误的操作方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4227930/