我们有一个.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
怎么会这样!我们在这里可能会缺少什么。
答案 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模式的代码:
然后,您可以参考该页面:
注意我已经走出控制器/视图结构(不建议用于MVC) 为了使它失败,我假设它与你发生的事情类似:
(请注意,html放置在我们希望匹配的控制器方法将其提供给调用者的视图中... ...
但是...
因此,如果你坚持采用这种方法,也许你可以在MVC控制器/视图结构之外设置一个内容文件夹,并将你的html放在那里。但是,再次,不要将主题击败,您可以轻松地将其转换为cshtml并通过控制器中的简单方法提供。只差我的两分钱......