我的ASP.NET WebAPI
项目中有100%的javascript应用程序。此应用程序使用我的API方法中的所有数据。
现在,我被要求在我的WebAPI项目中创建一个用Razor和HTML构建的简单门户(就像MVC项目一样)。
所以我在" 控制器"下创建了一个文件夹。文件夹名为" 门户"我放置了所有门户网站独家控制器。
以下是Controllers结构文件夹:
这是我的Razor Web应用程序视图结构:
因此,当我运行应用程序时,我可以看到“登录”页面视图(在" 帐户"文件夹下)。当我单击我的登录按钮时,我调用我的CommonController
(门户网站)来渲染左菜单,但是我收到错误:
我猜是因为我有2个CommonControllers
,但是1个用于我的javascript应用程序,另一个用于我的Portal应用程序。
我的Index.cshtml中调用公共控制器的行是:
<div class="page-header page-header-blue">
@Html.Action("Header", "Common")
<h1><i class="icon-bar-chart"></i> Dashboard</h1>
</div>
在我的WebApiConfig.cs
我有以下Web Api路线:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}"
);
所以我不知道如何告诉它我想要打电话给{34>} 门户&#34;文件夹中。
关于如何做到这一点和最佳做法的任何线索或建议?
更新
我为Portal控制器创建了其他路由:
CommonController
似乎可以正常工作,但在我的index.cshtml调用中: config.Routes.MapHttpRoute(
name: "DefaultMvc",
routeTemplate: "portal/{controller}/{action}"
);
如何告诉操作调用@Html.Action("Header", "Common")
而不只是Portal Common
?
答案 0 :(得分:1)
我认为您可以根据自己的情况使用区域。
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Billing_default",
"Admin/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
您需要更新Application_Start方法
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}