我已将一个 mvc 3 应用程序从 vs 2010 移植到 vs2012。
移植的应用程序使用 .NET 4。
所有旧位都可以工作,但是使用在 vs 2012 中创建的新视图,视图引擎不会为视图寻找 .cshtml 文件。
例如,当用户在 Solicitors 区域的 Welcome 控制器上请求 index 动作时,url 为:
mysite.com/solicitors/welcome/gg
(其中 gg 是用户名)。在这种情况下,返回的错误是:
未找到视图“索引”或其主视图,或者没有视图引擎支持搜索的位置。搜索了以下位置: ~/Areas/Solicitors/Views/Welcome/Index.aspx ~/Areas/Solicitors/Views/Welcome/Index.ascx ~/Areas/Solicitors/Views/Shared/Index.aspx ~/Areas/Solicitors /Views/Shared/Index.ascx ~/Views/Welcome/Index.aspx ~/Views/Welcome/Index.ascx ~/Views/Shared/Index.aspx ~/Views/Shared/Index.ascx ~/Areas/Solicitors/ Views/Welcome/gg.master ~/Areas/Solicitors/Views/Shared/gg.master ~/Views/Welcome/gg.master ~/Views/Shared/gg.master ~/Areas/Solicitors/Views/Welcome/gg. cshtml ~/Areas/Solicitors/Views/Welcome/gg.vbhtml ~/Areas/Solicitors/Views/Shared/gg.cshtml ~/Areas/Solicitors/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" />
编辑:
SolictorAreaRegistration.cs 中的路由:
context.MapRoute(
"Solicitors_Welcome",
"Solicitors/Welcome/{nameUser}",
new { controller = "Welcome", action = "Index", nameUser = UrlParameter.Optional }
);
编辑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);
}
}
}