我有一个包含4个项目的解决方案:
AS.Core.Common
(参考:数据,网络)AS.Core.Controllers
(参考文献:Common,Data,Web)AS.Core.Data
AS.Core.Web
(参考:数据)在我的控制器中,我返回视图的任何地方:
返回视图(“〜/ Views / Home / Index.cshtml”);
它以红色突出显示,我得到"Cannot resolve view '~/Views/Home/Index.cshtml'"
。
所有四个项目都成功构建,但是当我点击F5时,我得到以下内容:
>应用程序中的服务器错误。无法找到资源。
描述:HTTP 404.您正在寻找的资源(或其中一个 依赖项)可能已被删除,其名称已更改,或者是 暂时不可用。请查看以下网址并制作 确保它拼写正确。
请求的网址:/
版本信息:Microsoft .NET Framework版本:4.0.30319; ASP.NET版本:4.0.30319.17929
如何让我的控制器查看我的视图以便他们正确解决?我假设这就是我得到404响应的原因。
我的Global.asax.cs
看起来像这样:
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
// Register the default hubs route: ~/signalr
RouteTable.Routes.MapHubs();
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}
我的RouteConfig.cs
(我添加了名称空间,但似乎没有帮助)
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
namespaces: new[] { "AS.Core.Controllers" },
defaults: new
{
controller = "Home",
action = "Index",
id = UrlParameter.Optional
});
}
这是我的HomeController.cs
public class HomeController : Controller
{
public ActionResult Index()
{
//return View("~/Views/Home/Index.cshtml");
return View();
}
}
答案 0 :(得分:7)
在asp.net-mvc中,您可以在相应控制器的视图文件夹中返回有效的视图。例如,如果您有一个名为Product的控制器,则路径~/Views/Product/Index.cshtml
中可以有一个文件夹。在Index
操作中,您只需使用View()
类库的Controller
方法返回一个视图,该方法是asp.net mvc中的所有控制器都应该继承的。样本:
public ActionResult Index()
{
return View();
}
Asp.Net将在与您的操作名称相同的文件夹上找到一个视图,在这种情况下为Index
。
您还可以使用View
方法返回另一个视图,因为您在文件夹上有相应的视图,以获取示例:
public ActionResult Index()
{
return View("About");
}
考虑到这种情况,您应该在About
文件夹中有一个名为Product
的视图。样本:~/Views/Product/About.cshtml
。
如果将控制器更改为另一个项目(类库),则必须在asp.net mvc初始化上设置控制器的默认命名空间,在Global.asax
文件上尝试类似的操作{ {1}}方法:
Application_Start