我已经移植了一个mvc 3应用程序从vs 2010到vs2012。
移植的应用程序使用的是.NET 4。
所有的旧位都可以工作,但是使用vs 2012中创建的新视图,视图引擎不会为视图寻找.cshtml文件。
例如,当用户请求律师区域中欢迎控制器上的索引操作时,url是:
mysite.com/solicitors/welcome/gg (其中gg是用户名)。在这种情况下,返回的错误是:
未找到视图“索引”或其主目录,或者没有视图引擎支持搜索的位置。搜索了下列地点:~/Shared/律师/视图/Welcome/Index.aspx~/Shared/Solicitors/Views/Welcome/Index.ascx~/Shared/Solicitors/Views/Shared/Index.aspx~/Shared/Solicitors/Views/Shared/Index.ascx ~/Views/Welcome/Index.aspx ~/Views/Welcome/Index.ascx ~/Views/Shared/Index.aspx ~/Views/Shared/Index.ascx ~/Shared/Solicitors/Views/Welcome/ The /主/地区/律师/律师/视图/Shared/gg.master ~/Views/Welcome/gg.master ~/视图/Shared/gg.master~/领域/律师/视图/Welcome/gg.cshtml~/Shared/Solicitors/Views/Welcome/gg.vbhtml~/Shared/Solicitors/Views/Shared/gg.cshtml~//Solicitor/Views/Shared/gg.vbhtml ~/Views/Welcome/gg.cshtml ~/Views/Welcome/gg.vbhtml ~/Views/gg.cshtml ~/Views/Shared/gg.vbhtml
我已经为web.config中的应用设置添加了以下键,但这并没有什么区别。
<add key="webpages:Version" value="1.0" />编辑:
SolictorAreaRegistration.cs中的路由:
context.MapRoute(
"Solicitors_Welcome",
"Solicitors/Welcome/{nameUser}",
new { controller = "Welcome", action = "Index", nameUser = UrlParameter.Optional }
);编辑2:
使用RouteDebug,我可以看到找到了正确的控制器和操作。
路由数据
键值
nameUser: gg
控制员:欢迎
行动:索引
数据标记
键值
名称空间: System.String[]
工作范围:律师
UseNamespaceFallback:假
编辑3:
正如我从调试中看到的那样,正确地找到了路由:命中了Index操作。
当调用视图时,会发生以下问题:
namespace MyApp.Areas.Solicitors.Controllers
{
[Authorize]
public partial class WelcomeController : Controller
{
//
// GET: /Solicitors/Welcome/
public virtual ActionResult Index(string nameUser)
{
return View("Index", nameUser);
}
}
}发布于 2012-09-10 17:51:50
好吧,说到最下面:
问题是:
问题是,我的视图模型是string类型的。在我的操作中,我传入一个字符串作为模型参数:
public virtual ActionResult Index(string nameUser)
{
return View("Index", nameUser);
}这将与Controller.View(.)的重载之一发生冲突:
View(string, string)第二个参数需要布局文件的名称。当您这样做时,MVC开始寻找一个具有字符串值名称的布局文件,例如:
“你好,世界。我是个白痴,但是如果你给我一条正确的错误信息,我也许能修复这个错误。”
显然,不存在具有该名称的布局文件。一个名为"gg“的布局文件也没有(我的(测试)律师的用户名)。
解决办法:
解决办法很简单:
指定第二个参数是模型,而不是布局。
public virtual ActionResult Index(string nameUser)
{
return View("Index", model: nameUser);
}有用的条款:
要查看对这一问题的广泛讨论,请参阅以下文章:
MVC Gotcha: Beware when using your view's model is a string
非常感谢heartysoft.com的启示。
发布于 2012-09-10 12:54:10
从错误消息中可以看到:
~/Areas/Solicitors/Views/Welcome/gg.cshtml 如果需要查找Index视图,则需要指定它:
http://mysite.com/solicitors/welcome/index/gg https://stackoverflow.com/questions/12352001
复制相似问题