ASP.NET MVC中如何从主项目视图调用其他项目的视图
在ASP.NET MVC中跨项目调用视图的几种方案
因为Proj1和Proj2是解决方案里的两个独立项目,没法直接像同项目那样用@Html.ActionLink指向Proj2的Action,得根据部署方式选不同的方法:
独立部署(各自有域名/端口)
直接用普通<a>标签指向Proj2的完整访问地址即可。比如Proj2部署在http://localhost:5001,要打开它的Home/Index视图,菜单里这么写:<li><a href="http://localhost:5001/Home/Index">Proj2 首页</a></li>为了方便后期修改地址,建议把Proj2的基础URL放在Web.config的配置项里:
<appSettings> <add key="Proj2BaseUrl" value="http://localhost:5001" /> </appSettings>然后在视图里读取配置拼接地址:
<li><a href="@System.Configuration.ConfigurationManager.AppSettings["Proj2BaseUrl"]/Home/Index">Proj2 首页</a></li>同站点虚拟目录部署
如果两个项目部署在同一个IIS站点下,Proj2作为虚拟目录(比如名为proj2),可以用相对路径跳转:<li><a href="@Url.Content("~/proj2/Home/Index")">Proj2 首页</a></li>这里
~/会自动映射到当前站点根目录,加上虚拟目录名就能定位到Proj2的路由。通过Proj1的控制器中转跳转
要是想把跳转逻辑统一放在后端管理,不在视图里硬写URL,可以在Proj1的某个控制器里加一个跳转Action:public ActionResult RedirectToProj2() { // 同样可以从配置读取地址 string proj2Url = System.Configuration.ConfigurationManager.AppSettings["Proj2BaseUrl"] + "/Home/Index"; return Redirect(proj2Url); }然后菜单里用
ActionLink指向这个中转Action:<li>@Html.ActionLink("Proj2 首页", "RedirectToProj2", "Home")</li>
注意:如果两个项目是完全独立的MVC项目,不能直接引用Proj2的视图或控制器,因为它们的运行上下文是分开的,必须通过HTTP请求跳转。
内容的提问来源于stack exchange,提问作者khurj
相关产品推荐
相关产品推荐

