asp.net-mvc - RenderAction调用错误的操作方法

标签 asp.net-mvc asp.net-mvc-3 renderaction

我在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/

相关文章:

.net - ASP.NET MVC3 谷歌分析集成

asp.net - 为什么 uploadify 和 asp.net mvc 2 不适合我?

asp.net - 与ASP.NET Core中的Html.RenderAction等效

c# - ASP.NET MVC 的新手,在处理包含表单的呈现操作时遇到问题

c# - Html.RenderAction 使用 AJAX

javascript - 在表中选择 ng-change

asp.net-mvc - 您想要完全用代码创建 View 的 ASP.NET MVC View 引擎吗?

asp.net-mvc - 如何在显示模板中显示下拉列表的选定文本而不是选定值?

ASP.NET MVC 3,部分接收 JSON 作为字典?

asp.net - System.Web.Webpages.Html 与 System.Web.Mvc 命名空间中的 HtmlHelper 类