我有一个部分用于多个视图。 部分包含表格。表单被提交时的操作总是相同,但包含操作的控制器取决于视图。
假设我有控制器,每个控制器都有一个动作ActOnChoosenPerson:
FireStaffController
HireStaffController
我有部分
PersonList.ascx
表单呈现为
Html.BeginForm(“FireStaffController”, “ActOnChoosenPerson”)或
Html.BeginForm(“HireStaffController”, “ActOnChoosenPerson”)
摆脱控制器参数的好方法是什么?现在我将当前控制器的名称传递给模型并使用
Html.BeginForm(Model.CurrentController, “ActOnChoosenPerson”)
但这有点尴尬。
答案 0 :(得分:8)
此代码将始终提供您当前的控制器
<%=( Url.RequestContext.RouteData.GetRequiredString("Controller")) %>
显然你可以在没有&lt;%=喜欢这个
的情况下使用它Html.BeginForm(
Url.RequestContext.RouteData.GetRequiredString("Controller")) ,
"ActOnChoosenPerson")
它看起来更笨重,但你的模型不需要知道控制器在调用它。
答案 1 :(得分:6)
ViewContext的RouteData属性包含当前控制器和操作的名称。您可以像这样使用它们:
Html.BeginForm("ActOnChoosenPerson", ViewContext.RouteData.
GetRequiredString("controller"))
答案 2 :(得分:0)
最简单的方法是简单地调用没有参数的BeginForm()。