【问题标题】:Name a view/action 'View' in ASP.NET MVC without modifing routes在 ASP.NET MVC 中命名视图/操作“视图”而不修改路由
【发布时间】:2014-07-07 01:21:03
【问题描述】:

是否可以在 ASP.NET MVC 中将视图/操作命名为“视图”而不创建额外的一组路由定义?我想到了属性,但找不到合适的。 'View' 作为函数名是不可能的,因为它会隐藏派生的Controller 类的方法。

以视图为例:

public ActionResult HereShouldBeViewInsteadOfThisText()
{
    return View();
}

所以我可以使用网址/home/view/id

【问题讨论】:

    标签: c# asp.net-mvc routes


    【解决方案1】:

    您可以在操作方法上使用ActionName 属性。喜欢

    [ActionName("View")]
    public ActionResult ViewSomething(string id)
    {
        return View();
    }
    

    Phil Haack post 中提到了此解决方法

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      您的视图和操作名称不必匹配。这只是 MVC 采用的约定优于配置的方法。如果您想使用不同的视图名称,只需将其作为字符串传递给您的返回调用:

      public ActionResult MyAwesomeAction()
      {
          return View("View");
      }
      

      但是,我会说约定是约定是有原因的。当开发人员进入一个不熟悉的 MVC 项目说“这是动作 Foo,所以我需要编辑视图 Foo.cshtml”时,这非常简单。除非你有充分的理由,否则不要放弃这种轻松。

      【讨论】:

      • 对不起,我不是那个意思。我想将操作命名为“查看”。所以,你写MyAwesomeAction 的地方应该是View。我在第一篇文章中更正了这一点。
      猜你喜欢
      • 1970-01-01
      • 2011-03-14
      • 2014-02-14
      • 2017-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-18
      • 1970-01-01
      相关资源
      最近更新 更多