没有find视图或主视图,或没有视图引擎支持search的位置

错误如下:未find'LoginRegister'或其主人的视图,或没有视图引擎支持search的位置。 search了以下位置:

〜/查看/我的帐户/ LoginRegister.aspx

〜/查看/我的帐户/ LoginRegister.ascx

〜/查看/共享/ LoginRegister.aspx

〜/查看/共享/ LoginRegister.ascx

〜/查看/我的帐户/ LoginRegister.cshtml

〜/查看/我的帐户/ LoginRegister.vbhtml

〜/查看/共享/ LoginRegister.cshtml

〜/查看/共享/ LoginRegister.vbhtml

其实我的页面查看页面是~/Views/home/LoginRegister.cshtml所以我做

和我的RouteConfig

  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 = "MyAccount", action = "LoginRegister", id = UrlParameter.Optional } ); } } 

另外, 如果您的模型types是string ,请小心。 因为,第二个参数的视图 – string(主名称),但你可能需要调用对象参数(模型)的第一个构造函数。

不正确 :

 protected ActionResult ShowMessageResult(string msg) { return View("Message",msg); } 

正确:

 protected ActionResult ShowMessageResult(string msg) { return View("Message",(object)msg); } 

OR(由bradlis7提供):

 protected ActionResult ShowMessageResult(string msg) { return View("Message",model:msg); } 

问题:

您的View不能在默认位置find。

说明:

视图应位于与Controller相同的文件夹或Shared文件夹中。

解:

将您的View移动到MyAccount文件夹或创build一个HomeController

备择scheme:

如果你不想移动你的View或创build一个新的Controller你可以检查这个链接 。

在Microsoft ASP.net MVC中,用于parsing传入和传出URL组合的路由引擎的devise思想是“约定优于configuration”。 这意味着如果遵循路由引擎使用的约定(规则),则不必更改configuration。

ASP.net MVC的路由引擎不提供网页(.cshtml)。 它提供了一种方法,让URL由代码中的类来处理,它可以将text / html呈现到输出stream,或者使用Convention以一致的方式parsing和提供.cshtml文件。

用于路由的惯例是将Controller与名称类似于ControllerNameController的类进行匹配,即controller="MyAccount"表示find名为MyAccountController类。 接下来是映射到Controller类中的一个函数,该函数通常返回一个ActionResult 。 即action="LoginRegister"将在控制器的类中寻找一个函数public ActionResult LoginRegister(){} 。 这个函数可能会返回一个View() ,这个会被名为LoginRegister.cshtml的会议存储在/Views/MyAccount/文件夹中。

总而言之,您将拥有以下代码:

/Controllers/MyAccountController.cs:

 public class MyAccountController : Controller { public ActionResult LoginRegister() { return View(); } } 

/Views/MyAccount/LoginRegister.cshtml:您的视图文件。

在你的LoginRegister操作返回视图的时候,下面做,我知道这个可以在mvc 5中完成,我不知道是否在mvc 4中。

  public ActionResult Index() { return View("~/Views/home/LoginRegister.cshtml"); } 

检查您创build的View(.ASPX文件)是否与Controller中提到的名称相同。 例如:

  public ActionResult GetView() { return View("MyView"); } 

在这种情况下,aspx文件应该具有名称MyView.aspx而不是GetView.aspx

这可能是一个权限问题。

我最近有同样的问题。 作为一个testing,我创build了一个简单的hello.html页面。 当我尝试加载它时,我收到了有关权限的错误消息。 一旦我解决了根web文件夹中的权限问题,html页面和MVC渲染问题都解决了。

我得到这个错误,因为我重命名我的视图(和POST操作)。

最后,我发现我忘了把BOTH GET和POST动作重命名为新名称。

解决scheme重命名GET和POST操作以匹配视图名称。

如果问题在生产中间歇性地发生,则可能是由于操作方法中断。 例如,在涉及大file upload的POST操作期间,用户在上载完成之前closures浏览器窗口。 在这种情况下,action方法可能会抛出null模型或视图对象导致的空引用exception。 解决方法是将方法体封装在try / catch中,并返回null。 喜欢这个:

 [HttpPost] public ActionResult Post(...) { try { ... } catch (NullReferenceException ex) // could happen if POST is interrupted { // perhaps log a warning here return null; } return View(model); } 

检查你的视图的构build行为(.cshtml文件)它应该被设置为内容。 在某些情况下,我已经看到生成操作被设置为无(错误),并且这个特定的视图没有被部署在目标机器上,即使你看到有效的文件夹下的Visual Studio项目文件中存在该视图

如果你已经从上面的答案中检查了所有的东西(这是常见的错误),并且确定你的视图位于exception的位置,那么你可能需要重新启动 Visual Studio。

🙁

我的工作有一些政策不能使NuGet工作,结果,我的解决scheme失去了对microsoft.aspnet.mvc DLL的引用。 但是,一旦我手动添加到引用的DLL,我能够呈现该页面。