【问题标题】:Adding new .cshtml view to Visual Studio solution向 Visual Studio 解决方案添加新的 .cshtml 视图
【发布时间】:2013-08-26 19:33:49
【问题描述】:

我正在尝试向我的 VS 解决方案添加一个新的 WebPage.cshtml 视图,但是当我在本地主机上编译/运行我的解决方案 (F5) 时,该视图是空的。这只是一个简单的 HTML 页面。为什么是空的?

我是 MVC 开发的新手,因此我怀疑我缺少一个与模型、控制器和视图如何协同工作以生成视图相关的重要概念,但是,我已经阅读了足够多的相关内容,因此我理解了每个的基本概念。

我一直在玩控制器,我猜在视图工作之前我需要类似以下的东西:

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

对吗?

我还缺少什么其他拼图?

【问题讨论】:

  • WebPage.cshtml 需要位于与控制器同名的目录下(只是名称减去后缀“控制器”),该目录应位于 Views 文件夹中Views\ControllerName\WebPage.cshtml.
  • 是基础。花一天时间阅读本教程:asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-1 这将比任何简短的答案都更有用。
  • @asymptoticFault 已经完成。它在Views/Home 目录下,而我的actionResult 语句在HomeController.cs 文件中。
  • @Keven 您是否在视图中添加了任何内容?当您向解决方案添加新视图时,它通常没有任何内容,除了标题。
  • 那是你的问题。扩展 url 被烘焙到 mvc 中。这会将您导航到应该返回 404(未找到)的文件。从 url 中删除 .cshtml。

标签: html visual-studio-2010 asp.net-mvc-4 razor view


【解决方案1】:

根据您的评论@Keven,您尝试评估文件,但使用 Mvc,您将获得无扩展名的 url。从技术上讲,这不是一个简单的 html 页面。这是一个剃刀视图,当应用数据以生成您的输出时,它是 html。

我猜你的 route.config 看起来像这样:

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
}

这是说您希望您的网址看起来像 http://localhost:[port]/[controller name]/[action name] 或者如果您有查询字符串参数命名为 http://localhost:[port]/[controller name]/[action name]/[id]。为了使这个完整的循环,您基于上述路由的该页面的 url 将是 http://localhost:[port]/home/webpage

这是路由上的documentation

【讨论】:

    猜你喜欢
    • 2015-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-10
    • 2017-07-11
    • 1970-01-01
    • 2014-02-27
    • 1970-01-01
    相关资源
    最近更新 更多