Mit*_*all 3 asp.net-mvc controller asp.net-mvc-4
我有一个包含4个项目的解决方案:
AS.Core.Common (参考:数据,网络)AS.Core.Controllers (参考文献:Common,Data,Web)AS.Core.DataAS.Core.Web (参考:数据)在我的控制器中,我返回视图的任何地方:
return View("〜/ 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);
}
}
Run Code Online (Sandbox Code Playgroud)
我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
});
}
Run Code Online (Sandbox Code Playgroud)
这是我的 HomeController.cs
public class HomeController : Controller
{
public ActionResult Index()
{
//return View("~/Views/Home/Index.cshtml");
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
在asp.net-mvc中,您可以在相应控制器的视图文件夹中返回有效的视图.例如,如果您有一个名为Product的控制器,则路径中可以有一个文件夹~/Views/Product/Index.cshtml.在您的Index操作中,您只需使用类库的View()方法返回一个View Controller,asp.net mvc中的所有控制器都应该继承该类.样品:
public ActionResult Index()
{
return View();
}
Run Code Online (Sandbox Code Playgroud)
Index在这种情况下,Asp.Net将在与Action相同名称的文件夹中找到一个View .
您还可以使用该View方法返回另一个视图,因为您在文件夹上有相应的视图,用于示例:
public ActionResult Index()
{
return View("About");
}
Run Code Online (Sandbox Code Playgroud)
考虑到这种情况,您应该About在Product文件夹中指定一个View .样品:~/Views/Product/About.cshtml.
如果将控制器更改为另一个项目(类库),则必须在asp.net mvc初始化上设置控制器的默认命名空间,在Global.asax文件和Application_Start方法上尝试这样的操作:
ControllerBuilder.Current.DefaultNamespaces.Add("NamespaceOfYourProject.Controllers");
Run Code Online (Sandbox Code Playgroud)
看一下这篇文章:http://dotnetslackers.com/articles/aspnet/storing-asp-net-mvc-controllers-views-in-separate-assemblies.aspx
| 归档时间: |
|
| 查看次数: |
20686 次 |
| 最近记录: |