2011-10-06 77 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

這可能會幫助您更好地進行調試。