Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我可以将ASP.NET MVC与常规ASP.NET Web表单一起使用吗_C#_Asp.net_.net_Asp.net Mvc - Fatal编程技术网

C# 我可以将ASP.NET MVC与常规ASP.NET Web表单一起使用吗

C# 我可以将ASP.NET MVC与常规ASP.NET Web表单一起使用吗,c#,asp.net,.net,asp.net-mvc,C#,Asp.net,.net,Asp.net Mvc,我根据客户的要求,用ASP.NET Web表单建立了一个巨大的网站。问题是我发现ASP.NET Web表单有些不直观(仅限于我个人的喜好)。所以我想做的是使用MVC,但我不能指望我的客户为我的完全重写付出时间(他也没有时间) 所以我想问的是,我能不能同时使用ASP.NETMVC和Web表单,并逐渐越来越多地使用MVC?有什么建议吗?2014年更新: Visual Studio 2013使我们更接近ASP.NET没有MVC 项目类型或Web表单项目不再有了,只有ASP.NET。如果 如果您想混合使

我根据客户的要求,用ASP.NET Web表单建立了一个巨大的网站。问题是我发现ASP.NET Web表单有些不直观(仅限于我个人的喜好)。所以我想做的是使用MVC,但我不能指望我的客户为我的完全重写付出时间(他也没有时间)

所以我想问的是,我能不能同时使用ASP.NETMVC和Web表单,并逐渐越来越多地使用MVC?有什么建议吗?

2014年更新:

Visual Studio 2013使我们更接近ASP.NET没有MVC 项目类型或Web表单项目不再有了,只有ASP.NET。如果 如果您想混合使用Web表单和Web API,或者MVC和SignalR,请继续 你们受到鼓励和支持。新的特性和功能正在开发中 在不破坏现有应用的情况下,与NuGet一起引入

因此,现在鼓励混合使用Web表单和MVC(MVC一直在无缝地工作),并模糊了边界。我猜微软认识到需要允许项目慢慢迁移到MVC,或者只根据需要迁移部分,并获得两个方面的最佳效果


MVC项目:

在Web表单中使用MVC已经有相当一段时间了,这当然是可能的,也是一个很好的选择。通过良好的体系结构设计,例如DDD(服务存储库、依赖项注入等),可以轻松地将新功能和页面添加到MVC页面中,旧的内容可以保持原样。在webforms页面中结合MVC也可以很好地工作,尽管JS验证可能存在一些小问题。我强烈推荐它

从创建MVC应用程序(5ATM)开始,然后在基本模板建立并运行之后,在文件夹中添加旧的webforms,这相当容易。这样,您就可以正确地获得新的MVC设置,并保持向后兼容性

  • 您可以创建一个MVC项目,只需将所有Webforms页面复制到一个文件夹中即可。(我想也可以升级一个项目)
  • 设置路由以忽略URL中具有特定foldername的请求。通过这种方式,MVC和webforms可以一起使用,而不会在URL中遇到麻烦
  • Asp.net WebForms aspx页面可以驻留在MVC中,只要它们不放在/Views文件夹中
  • 使用Razor超越旧语法,您可以轻松定制HTML帮助程序,而且更简洁
  • 检查MVC标准和惯例,控制器应该是非常轻量级的。它不是可以包含所需逻辑的代码
  • 视图包含的内容不应超过表示逻辑(无业务逻辑)
  • 一切新事物=>MVC
  • 资源、web.config等可供两者使用
  • 菜单不使用MVC中的旧站点地图
在webforms.aspx页面中使用MVC:

下面的文本旨在演示如何从webforms页面内部利用MVC。(例如在MyPage.aspx中)您可以在webforms中使用MVC操作/视图,例如ajax来填充页面的一部分或某些div

包含MVC的Webforms可以很好地工作,至少在HTML中添加ajax调用以填充来自MVC的div时是这样

在.aspx中

..html & webforms code

<div id="fillMeFromMVC">
  <script type="text/javascript">
   $.ajax(... call an MVC action to fill 
      the "fillMeFromMVC" div that this script sits inside of);
 </script>
</div>
.html和webforms代码
$.ajax(…调用MVC操作来填充
此脚本所在的“fillMeFromMVC”div);
这将通过MVC填充页面的一部分,您可以干净地执行MVC,而不用担心webforms中的操作

WebForms与MVC:

至此,您可能已经非常清楚这两种技术之间的差异,但是这里有一个它们之间的比较。它们都有各自的目的和用途。我个人更喜欢MVC,因为我需要做的事情,但是这可能取决于你想要实现什么

如果您在其背后使用SOA,那么webforms和MVC页面都可以使用相同的业务逻辑Webforms在代码都在页面后面并且与UI绑定(没有分离关注点)时可能有害。具有坚实的体系结构和可减少的工作量。

进一步阅读:


我认为你错了,因为MVC
RouteCollection
有一个名为
RouteExistingFiles
的设置,默认设置为
false
。这意味着,如果您访问一个现有的aspx页面(并且该页面不在“视图”文件夹中(local web.config阻止对文件的直接请求访问),则应将其作为日常网络表单处理。好的,我不完全确定这一点,我编辑了这篇文章。@Iko:如果您不确定,可以对其进行测试,对吗?:)但我不是说在MVC视图中嵌入Web窗体服务器控件。。。我是说web表单页面可以驻留在MVC web应用程序中。所以你显然误解了我的评论,因为你所做的是将WebForms页面与部分Asp.net MVC视图混合在一起。OP问的是另一件事。@RobertKoritnik很高兴知道,所以你可以做相反的事情(MVC页面中的Webforms)。然而,他询问在同一个项目中使用它们。我可以假设,在某个时刻,他可能想要更新页面的一部分,在这种情况下,只需删除webforms部分并用MVC替换它就很简单了。假设有一个臃肿复杂的控件,他可以用MVC来替换,这可以使用我建议的解决方案。他要求我提供一些建议,我以前也这样做过,我认为这是他可能遇到的情况(特别是当他注意到他的偏好是MVC时)。将webforms放在MVC项目的文件夹中听起来是一个干净的解决方案,但我无法理解它在共享资产(如纸条、图像、字体等)方面如何工作。。。此外,在您的解释中,不清楚如何导航到webforms而不显示其con