ASP.NET MVC 3中的Html.RenderAction()

时间:2011-10-06 17:56:58

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

在我的布局中,我正在使用RenderAction,它将输出一个简单的电子邮件表单,该表单将发布到一个动作。

// In _Layout.cshtml
@{Html.RenderAction("Email", "Home")};

// Home Controller
[ChildActionOnly]
public ActionResult Email(){}

[HttpPost]
public ActionResult Email(params){}

现在RenderAction在页面上唯一的表单时效果很好。但是,如果不是,除了我不理解的其他表单操作之外,还会调用Email Post操作。表格不是嵌套的;来源看起来像这样:

<form id="email-form" action="/home/email" method="post">
// form elements
</form>

<form id="some-other-form" action="/somecontroller/someaction" method="post">
// form elements
</form>

如果来自不同的表格,我如何避免儿童行动的帖子?作为一种解决方法,我可以检查传入的参数,如果它们是空的,我应该很好,花花公子,但我不认为这是预期的行为。

1 个答案:

答案 0 :(得分:1)

控制器中的

this.ControllerContext.IsChildAction;可让您检查帖子是来自网址还是来自Html.RenderAction

这可能会帮助您更好地调试它。