2
主控制器和动作名字我有一个控制器:如何从局部视图操作
public class LanguageController : Controller
{
[HttpGet]
public ActionResult Index()
{
// populate viewModel from database
return PartialView(viewModel)
}
[HttpPost]
public ActionResult Index(string language)
{
LanguageCookie.Write(Response, language);
return RedirectToAction(ACTION, CONTROLLER, new {culture = language});
}
}
及其局部视图:
@model MyModel
@using (Html.BeginForm("Index", "Language"))
{
@Html.DropDownList(
Model.SelectedLanguageShortName,
Model.AllLanguages
)
<input type="submit" value="Select" />
}
我在_Layout.cshtml渲染:
<div>
@Html.Action("Index", "Language")
</div>
请让我知道如何从我的LanguageControlle获得主(非部分)控制器的ACTION/CONTROLLER名称r被称为。我需要在回送的地方设置cookie,并且希望将用户重定向到同一页面,但使用首选语言。
我发现这个例子:
var rd = ControllerContext.ParentActionViewContext.RouteData;
var currentAction = rd.GetRequiredString("action");
var currentController = rd.GetRequiredString("controller");
但ControllerContext.ParentActionViewContext是在回发空。我能得到什么,我需要的观点,但它是丑陋:
@Html.Hidden("Controller", HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString());
@Html.Hidden("Action", HttpContext.Current.Request.RequestContext.RouteData.Values["action"].ToString());
如何获得在控制器范围相同的信息?
谢谢Slawomir,我选择了第一个变体,因为使用url我记得不仅是控制器/动作,还有其他参数在初始请求中。 – 2013-03-03 20:51:47