Using Html.BeginForm to post to the current controller
asp.net-mvc
Solution
This code will always give your current controller
<%=( Url.RequestContext.RouteData.GetRequiredString("Controller")) %>
Obviously you can use it without the <%= like this
Html.BeginForm(
Url.RequestContext.RouteData.GetRequiredString("Controller")) ,
"ActOnChoosenPerson")
It looks more clunky but your model should not need to know what controller is calling it.
Problem
I have a partial that is used in several views. The partial contains forms. The action when a form is submited is allways the same, but the controller thats contains the action depends on the view. Lets say I have Controllers that each have an action ActOnChoosenPerson: FireStaffController HireStaffController I have a partial PersonList.ascx The forms are rendered as Html.BeginForm("FireStaffController" , "ActOnChoosenPerson") or Html.BeginForm("HireStaffController" , "ActOnChoosenPerson") What is a good way to get rid of the controller parameter? Right now I pass the name of the current controller into the model and use Html.BeginForm(Model.CurrentController , "ActOnChoosenPerson") but that is a bit awkward.