如何在MVC操作中指定视图名称?

时间:2018-05-14 09:44:09

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

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

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

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

这是截图

enter image description here

然后我创建第二个控制器。然后就出现了问题。

我为此创建了一个名为NewPostControllerADD View的新控制器

enter image description here

但是它创建了另一个带有View名称的文件夹,里面是它创建的视图

enter image description here

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

所以我将NewPost.cshtml拖到了admin文件夹中。运行应用程序然后我收到错误说

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

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

我尝试指定视图名称

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

我阅读的大部分解决方案都是指定视图名称。但我无法使其发挥作用。我错过了什么?还是不明白?谢谢。

2 个答案:

答案 0 :(得分:3)

MVC有一种命名约定,如果您的控制器名为FooController,那么您的视图应保留在文件夹名称Foo中。

在此控制器内,您将拥有

public ActionResult <name of view>

名称与视图完全相同,便于参考。

因此,当您在Foo文件夹下有一个视图时,该cshtml文件的名称是Hello 然后在FooController中,你有一个

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

希望你理解我的解释。

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

public ActionResult NewPost()

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

localhost/admin/NewPost()

如果我错过了任何内容或任何错误,请评论hehe有点急于回答

答案 1 :(得分:1)

只需将您的NewPost操作移至您的AdminController

public class AdminController : Controller
{
    public ActionResult Dashboard()
    {
        return View();
    }

    // Here you go
    public ActionResult NewPost()
    {
        return View();
    }
}

如果您希望DashboardNewPost视图都位于Admin文件夹

,则这是默认的MVC结构