迁移到MVC 4

时间:2017-09-19 17:35:58

标签: c# asp.net-mvc

我们有一个.NET 4.0,MVC 2项目,其中HomeController看起来像这样:

[HandleError]
public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View("~/client/index.html");
    }
 }

一切都很好。

但是,当我们开始链接到.NET 4.5和MVC 4时,运行时似乎找不到这个index.html!我们收到此错误:

  

未找到视图'〜/ client / index.html'或其主页或没有查看   引擎支持搜索的位置。以下地点是   搜索:〜/ client / index.html

怎么会这样!我们在这里可能会缺少什么。

2 个答案:

答案 0 :(得分:1)

我从未见过使用直接html页面的MVC。这是一个更典型的设置:

控制器

[HandleError]
public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View("Index");
    }
}

视图为/views/Home/Index.cshtml。默认情况下,MVC希望视图位于与控制器名称对应的文件夹中的views文件夹中。

如果您希望将布局分解为单独的文件,则通常位于/views/Shared/

如果您的HTML网页是自包含的,您应该可以将其移动并将其重命名为index.cshtml,并在页面的某处添加以下内容。

@{
    Layout = null;
}

答案 1 :(得分:0)

找到html页面时要小心。将它放在视图文件夹中,根据MVC规则,控制器应该进行处理,导致我的测试出错。这是使其工作的一种方法,尽管这并不是真正编写MVC模式的代码:

enter image description here

然后,您可以参考该页面:

enter image description here

注意我已经走出控制器/视图结构(不建议用于MVC) 为了使它失败,我假设它与你发生的事情类似:

enter image description here

(请注意,html放置在我们希望匹配的控制器方法将其提供给调用者的视图中... ...

但是...

enter image description here

因此,如果你坚持采用这种方法,也许你可以在MVC控制器/视图结构之外设置一个内容文件夹,并将你的html放在那里。但是,再次,不要将主题击败,您可以轻松地将其转换为cshtml并通过控制器中的简单方法提供。只差我的两分钱......