【问题标题】:How to get view name in controller while navigating from view to controller in MVC3在 MVC3 中从视图导航到控制器时如何在控制器中获取视图名称
【发布时间】:2014-08-21 15:47:51
【问题描述】:

我的项目中有以下视图,

PolicyScreen.cshtml

上面的视图有下面的控制,

@Html.ActionLink("OK", "AccountScreen", "AccountUC", new { id= ViewBag.id})

帐户控制器如下所示,

[ActionName("AccountScreen")]
public ActionResult GetPolicyController(int id)
{
if (viewName='PolicyScreen')
{
//do validation
}
}

如果我点击确定,我可以正确地点击 AccountUC 控制器和 AccountScreen Action Name。 现在我需要知道我是从哪个视图导航到 AccountUC 控制器的?

答案是PolicyScreen,但我不知道如何在action方法中获取这个视图名称,有什么帮助吗?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3


    【解决方案1】:

    我想知道你为什么需要这个,但你可以通过将视图名称放在操作链接参数中来做到这一点:

    new { id = ViewBag.id, fromView = "PolicyScreen" }
    

    当然,您需要更改操作方法的签名:

    public ActionResult AccountScreen(int id, string fromView)
    

    如果您想自动获取视图名称而不是硬编码,请参阅Retrieve the current view name in ASP.NET MVC?

    如果您想要 action 名称而不是视图名称,请参阅 Get current action and controller and use it as a variable in an Html.ActionLink?

    【讨论】:

    • 我从多个角度调用该操作,所以我只需要传递 1 个参数,否则我必须更改这么多逻辑。有没有其他方法可以获取视图名称?我已经编辑了问题,请看一下。
    • 为什么您需要知道从哪个视图点击了链接?听起来像一个应该以另一种方式解决的问题。虽然有点不靠谱,但是可以试试get the referrer URL
    【解决方案2】:

    试试这个

    @Html.ActionLink("OK", "AccountScreen", "AccountUC", 
                new { id= ViewBag.id , viewName="replaceCurrentViewNameHere"},null)
    

    确保您的操作方法具有接受我们发送的视图名称的参数

    [ActionName("AccountScreen")]
    public ActionResult GetPolicyController(int id,string viewName)
    {
       if (viewName=='PolicyScreen')
       {
         //do validation
       }
    }
    

    【讨论】:

      猜你喜欢
      • 2012-08-11
      • 1970-01-01
      • 2013-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多