我在包含表单的很多页面上使用了部分控件 formy.ascx 。
当我在部分控件上单击提交时,以下函数处理表单提交。
[ActionName("FormyTemp"), AcceptVerbs(HttpVerbs.Post)]
public ActionResult FormyTemp(FormCollection result)
现在,我需要知道什么页面,即提交此表单时我所处理的操作。
我尝试将(string)ViewContext.RouteData.Values["action"]
作为表单参数之一传递,但是当它只是一个部分控件时它告诉Formy作为动作。我该怎么做呢?我不能只查看网址,因为我的某些网址类似于 domain.com/actionName ,其中一些网址类似于 domain.com/controllerName/actionName 。
另外,请不要告诉我使用RenderPartial ...我需要使用RenderAction
答案 0 :(得分:0)
渲染动作时:
<% Html.RenderAction("Formy", new RouteValueDictionary {
{ "ParentAction", ViewContext.RouteData.Values["action"] }
}); %>
和Formy行动:
[ChildActionOnly]
public ActionResult Formy(string parentAction)
{
// the parentAction parameter will have the desired value,
// so you can pass it to the view model Formy.ascx is strongly
// typed to and include it as hidden field in the form. When
// the form is later submitted the value will be passed to FormyTemp
return View();
}
答案 1 :(得分:0)
根据我的理解,您需要知道 Parent 表单的操作,而不是渲染部分的单个RenderAction。在这种情况下,您可以使用以下内容:
ViewContext.ParentActionViewContext.RouteData.Values["action"];