在ascx - asp.net mvc的post方法中找到动作名称

时间:2010-10-14 22:28:49

标签: asp.net-mvc

我在包含表单的很多页面上使用了部分控件 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

2 个答案:

答案 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"];