我已经将VS2010的网站项目转换为VS2013中的Web应用程序项目。现在我想将VS2012 MVC4项目集成到这个VS2013项目中。所以我在这个新的VS2013项目中创建了一个名为Test的MVC区域。因此,在Test area文件夹中创建了一个新类,如下所示:
public class TestAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "Test";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Test_default",
"Test/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
}
在“测试”区域的Controller文件夹中,我创建了一个带有索引操作方法的HomeController - 以及相应的视图“Index.cshtml”。
当我运行应用程序时,它默认打开WebFomrms的Default.aspx页面。如果我通过http://localhost:1234/WebAppName/Home/Index
打开应用程序,它将打开Index.cshtml视图。到目前为止,我喜欢这一切。
如何在此新应用中进行路由以在webform和MVC视图之间导航。例如,我的WebForm主页有一个左侧导航栏,我可以链接到一些WebForm页面,用户可以毫无问题地导航到这些页面。如何将MVC视图的链接添加到此WebForm左侧导航栏,以便用户可以在webform页面和MVC视图之间来回导航。
我的项目针对的是.NET 4.5.1。
答案 0 :(得分:0)
您可以使用WebForms代码中的Response.Redirect和正确的URL路由到您的控制器,我想您的情况就是:
Response.Redirect("/Home/Index");
或者甚至更好的是你可以为处理你的路由的HtmlHelper做一个扩展方法:
public static class ExtensionMethods
{
public static MvcHtmlString WebFormActionLink(this HtmlHelper htmlHelper, string linkText, string ruoteName, object routeValues)
{
var helper = new UrlHelper(htmlHelper.ViewContext.RequestContext);
var anchor = new TagBuilder("a");
anchor.Attributes["href"] = helper.RouteUrl(routeName, routeValues);
anchor.SetInnerText(linkText);
return MvcHtmlString.Create(anchor.ToString());
}
}
你的路线:
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapPageRoute(
"Webforms-Route", // Route name
// put your webforms routing here
);
routes.MapRoute(
"MVC-Route", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
然后,您只需将路线传递给HtmlHelper即可获得正确的路线。