2011-10-06 39 views
1

在我的布局中,我使用了RenderAction,它将输出一个简单的电子邮件表单,它将发布到一个操作。ASP.NET MVC 3中的Html.RenderAction()

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

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

[HttpPost] 
public ActionResult Email(params){} 

现在,RenderAction的工作效果很好,因为它是页面上唯一的表单。但是,如果不是,则除了我不了解的其他表单操作之外,还会调用电子邮件发布操作。表格不是嵌套的;源代码看起来像这样:

<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

this.ControllerContext.IsChildAction;在你的控制器将给你检查帖子是来自URL还是通过Html.RenderAction

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