【问题标题】:How to specify the view name in an MVC action?如何在 MVC 操作中指定视图名称?
【发布时间】:2018-05-14 09:44:08
【问题描述】:

我正在学习 Asp MVC。 我已经从事 WPF MVVM 程序两年了,但据我所知,我还需要学习 ASP,这是我所在国家/地区 Web 开发中使用的通用语言。而且我也有 c# 方面的知识,所以我认为调整不会很困难,但我在使我的网站正常工作方面已经面临很多问题。我尝试阅读有关 ASP 和 MVC 的内容,但我通过做事和从错误中学习而不是阅读它。所以我决定试一试。

我使用 Visual Studio Community Edition 2017 创建了一个 EMPTY MVC 项目

我已经创建了布局页面和第一个控制器和第一个视图,它完全可以正常工作。

这是截图

然后我创建第二个控制器。那么问题就来了。

我像这样为它创建了一个名为 NewPostControllerADD View 的新控制器

但它会创建另一个以视图名称命名的文件夹,其中包含它创建的视图

我不希望它以这种方式组织。

所以我将NewPost.cshtml 拖到管理文件夹中。运行应用程序然后我收到一个错误提示

The resource cannot be found.
Requested URL: /Admin/NewPost

我搜索了一个解决方案,但我无法解决问题

我尝试指定视图名称

        public ActionResult NewPost()
        {
            return View("~/Admin/NewPost");
        }

我阅读的大多数解决方案都是指定视图名称。但我不能让它工作。我错过了什么?还是不明白?谢谢。

【问题讨论】:

  • 只需像这样使用视图名称:return View("NewPost");。无需使用cshtml文件的完整路径。
  • 为什么要改变 MVC 的自然架构?如果您希望 NewPost 操作位于 Admin 控制器文件夹中,则只需将您的操作从 NewPostController 移动到 AdminController
  • 如果您想为视图使用非标准位置,我建议您实现 custom Razor view engine
  • 您需要移动 both 方法和视图文件(public ActionResult NewPost() 需要在 AdminController 中,NewPost.cshtml 文件需要在 @987654341 中@
  • @classname13 你应该在AdminController 中移动NewPost 方法以获取/Admin/NewPost URL。 NewPostController 将创建 /NewPost/NewPost

标签: c# asp.net-mvc razor model-view-controller


【解决方案1】:

MVC 有一种命名约定,如果你的控制器被命名为 FooController,那么你的视图应该保存在一个名为 Foo 的文件夹中。

在这个控制器里面你会拥有你的

public ActionResult <name of view>

名称与视图完全相同,以便于引用。

所以当您在 Foo 文件夹下有一个视图并且该 cshtml 文件的名称是 Hello 然后在 FooController 里面,你有一个

public ActionResult Hello(//parameter here){
    //body here
}

希望你能理解我的解释。

也回答你的问题。我假设您希望 NewPost.cshtml 作为管理文件夹的一部分。只需添加

public ActionResult NewPost()

到您的管理控制器,然后您可以使用

localhost/admin/NewPost()

如果我遗漏了任何内容或任何错误,请发表评论,嘿嘿回答这个有点匆忙

【讨论】:

    【解决方案2】:

    只需将您的 NewPost 操作移至您的 AdminController 即可:

    public class AdminController : Controller
    {
        public ActionResult Dashboard()
        {
            return View();
        }
    
        // Here you go
        public ActionResult NewPost()
        {
            return View();
        }
    }
    

    如果您希望 DashboardNewPost 视图都在 Admin 文件夹中,这是默认的 MVC 结构

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-23
      • 2011-01-03
      • 2010-12-31
      • 2011-05-29
      • 1970-01-01
      • 1970-01-01
      • 2016-03-06
      相关资源
      最近更新 更多