Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 ASP.NET MVC 3赢得';无法识别.cshtml视图文件_Asp.net Mvc 3_Visual Studio 2012 - Fatal编程技术网

Asp.net mvc 3 ASP.NET MVC 3赢得';无法识别.cshtml视图文件

Asp.net mvc 3 ASP.NET MVC 3赢得';无法识别.cshtml视图文件,asp.net-mvc-3,visual-studio-2012,Asp.net Mvc 3,Visual Studio 2012,我已经将mvc 3应用程序从VS2010移植到vs2012 移植的应用程序正在使用.NET 4 所有旧的位都可以工作,但在vs 2012中创建的新视图中,视图引擎不会为该视图查找.cshtml文件 例如,当用户在律师区域的欢迎控制器上请求索引操作时,url为: mysite.com/solicitors/welcome/gg (其中gg是用户名)。在这种情况下,返回的错误是: 未找到视图“索引”或其主视图,或者没有视图引擎 支持搜索的位置。下列地点为 搜索:~/Areas/lavors/Vi

我已经将mvc 3应用程序从VS2010移植到vs2012

移植的应用程序正在使用.NET 4

所有旧的位都可以工作,但在vs 2012中创建的新视图中,视图引擎不会为该视图查找.cshtml文件

例如,当用户在律师区域的欢迎控制器上请求索引操作时,url为:

mysite.com/solicitors/welcome/gg 
(其中gg是用户名)。在这种情况下,返回的错误是:

未找到视图“索引”或其主视图,或者没有视图引擎 支持搜索的位置。下列地点为 搜索:~/Areas/lavors/Views/Welcome/Index.aspx ~/Areas/lavors/Views/Welcome/Index.ascx ~/Areas/lavors/Views/Shared/Index.aspx ~/Areas/Lassers/Views/Shared/Index.ascx~/Views/Welcome/Index.aspx ~/Views/Welcome/Index.ascx~/Views/Shared/Index.aspx ~/Views/Shared/Index.ascx~/Areas/lavors/Views/Welcome/gg.master ~/Areas/Lassers/Views/Shared/gg.master~/Views/Welcome/gg.master ~/Views/Shared/gg.master~/Areas/lavors/Views/Welcome/gg.cshtml ~/Areas/lavors/Views/Welcome/gg.vbhtml ~/Areas/lavors/Views/Shared/gg.cshtml ~/Areas/laughtors/Views/Shared/gg.vbhtml~/Views/Welcome/gg.cshtml ~/Views/Welcome/gg.vbhtml~/Views/Shared/gg.cshtml ~/Views/Shared/gg.vbhtml

我已经在web.config中将以下键添加到appsettings中,但没有任何区别

<add key="webpages:Version" value="1.0" />
编辑2: 使用RouteDebug,我可以看到找到了正确的控制器和操作

路由数据

关键值

姓名用户:gg

控制员:欢迎

行动:索引

数据令牌

关键值

名称空间:System.String[]

地区:律师

UseNamespaceFallback:False

编辑3: 正如我从调试中看到的那样,路由被正确地找到了:索引操作被命中

调用视图的行调用时会出现问题:

namespace MyApp.Areas.Solicitors.Controllers
{
    [Authorize]
    public partial class WelcomeController : Controller
    {
        //
        // GET: /Solicitors/Welcome/
        public virtual ActionResult Index(string nameUser)
        {
            return View("Index", nameUser);
        } 
    }
}

您可以从错误消息中看到:

~/Areas/Solicitors/Views/Welcome/gg.cshtml 
如果需要查找索引视图,则需要指定它:

http://mysite.com/solicitors/welcome/index/gg 

好了,我要追根究底了:

问题是: 问题是我的视图的模型是string类型的。在我的操作中,我传入了一个字符串作为模型参数:

public virtual ActionResult Index(string nameUser)
        {
            return View("Index", nameUser);
        }
这将与控制器的某个重载冲突。视图(…):

第二个参数需要布局文件的名称。当您执行此操作时,MVC将查找带有字符串值名称的布局文件,例如:

“你好,World。我是个白痴,但是如果你给我一个像样的错误消息,我也许可以修复这个错误。”

显然,具有该名称的布局文件不存在。名为“gg”的布局文件(我的(测试)律师的用户名)也没有

解决方案: 解决方案很简单:

指定第二个参数是模型,而不是布局

public virtual ActionResult Index(string nameUser)
        {
            return View("Index", model: nameUser);
        }
有用文章: 要查看有关此问题的详细讨论,请参阅以下文章:


非常感谢heartysoft.com的启示。

这是可行的,但就我使用的路径而言(请参见问题的编辑),我不需要在url中指定操作。事实上,这应该是可行的。这对我来说确实有用。我无法重现您描述的问题。谢谢您帮助Darin。答案就在我对问题的回答中。不确定为什么会发生这种情况,但解决方案是有效的。
View(string, string)
public virtual ActionResult Index(string nameUser)
        {
            return View("Index", model: nameUser);
        }