Asp.net 我想将MVC添加到Web表单项目中(在VisualStudio2019中)
我们有很多网页,我们不想把它们全部移植到MVC中,所以我们决定将新的网页开发到MVC中 我想将MVC添加到我现有的Web表单项目中。有人能提供有关如何执行此操作的更多信息吗 如何在新的MVC视图中使用Web表单母版页Asp.net 我想将MVC添加到Web表单项目中(在VisualStudio2019中),asp.net,.net,asp.net-mvc,webforms,Asp.net,.net,Asp.net Mvc,Webforms,我们有很多网页,我们不想把它们全部移植到MVC中,所以我们决定将新的网页开发到MVC中 我想将MVC添加到我现有的Web表单项目中。有人能提供有关如何执行此操作的更多信息吗 如何在新的MVC视图中使用Web表单母版页 有可用的解决方案,但我正在寻找Visual studio 2019的解决方案(因为在vs 2019中更改了设置) 最简单的开始方法是安装Microsoft.AspNet.Mvc nuget软件包 创建一个区域,然后开始在该区域中构建控制器。一切都会像在普通MVC应用程序中一样正常工
有可用的解决方案,但我正在寻找Visual studio 2019的解决方案(因为在vs 2019中更改了设置) 最简单的开始方法是安装Microsoft.AspNet.Mvc nuget软件包 创建一个区域,然后开始在该区域中构建控制器。一切都会像在普通MVC应用程序中一样正常工作 也可以不使用区域。为此,需要创建route.config类。下面是它可能的样子。注意告诉它避免.aspx文件的那一行
public static class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
然后从Global.asax调用RegisterRoutes方法。它看起来像这样
protected void Application_Start(object sender, EventArgs e)
{
AreaRegistration.RegisterAllAreas();
RouteConfig.RegisterRoutes(RouteTable.Routes);
//other application_start code
}
如果你想开始使用MVC提供的一些好东西,比如依赖注入,你需要创建一个启动文件。我相信要创建启动文件,您需要nuget软件包Microsoft.Owin和Microsoft.Owin.Host.SystemWeb。将启动文件添加到与任何mvc应用程序相同的位置,它将按预期工作
在mvc布局中使用web窗体母版页非常困难。我发现,将所需的代码放入各种html帮助程序中效果很好。然后可以从web窗体母版页和mvc布局页访问这些内容。这里有一个例子
namespace MyHelpers
{
public static class MyMasterPageNavigationHelper
{
public static MvcHtmlString GetNav(this HtmlHelper htmlHelper)
{
return MvcHtmlString(GetNavigation());
}
public static string GetNavigation()
{
var a = new TagBuilder("a");
a.Attributes.Add("href", "https://www.example.com");
a.SetInnerText("example");
return a.ToString();
}
}
}
这是Mvc布局页面的名称
@using MyHelpers
@Html.GetNav()
这是您在webforms页面上对它的称呼
<%@ Import Namespace="MyHelpers" %>
<%= MyMasterPageNavigationHelper.GetNavigation() %>
在这两种情况下,html
<a href="https://example.com">example</a>
将被渲染。希望您能看到它是如何发展的,以实现您需要的母版页部分
以下是一些我发现对本主题有帮助的链接
这个
这个。如果母版页的回发中有代码,您可能会发现这很有用。谢谢Dave。这有助于我在Visual2019的Web表单项目中添加MVC。现在,我将尝试母版页。嗨,Dave,还有其他方法可以将Web表单母版页传递到MVC视图吗。或者我必须创建与web表单母版页相同的新的_Layout.cshtml,并在MVC视图页面中使用这个_Layout.cshtml。我认为您需要使用_Layout.cshtml。这就是答案。它基本上说MVC不能处理viewstate。因此,我的建议是使用master for webforms、_layout.cshtml for mvc,并在可能的情况下使用master page和_layout.cshtml来共享html帮助程序,以避免重复。