如果给你选择的机会,你会选择哪条路?
ASP.NET Webforms + ASP.NET AJAX
还是
ASP.NET MVC + 你选择的 JavaScript 框架
相对于 MVC,ASP.NET Webforms/ASP.NET AJAX 有什么限制吗?
如果给你选择的机会,你会选择哪条路?
ASP.NET Webforms + ASP.NET AJAX
还是
ASP.NET MVC + 你选择的 JavaScript 框架
相对于 MVC,ASP.NET Webforms/ASP.NET AJAX 有什么限制吗?
最近我都做过,但如果要选择的话,我会十次中有九次选择MVC。
我唯一会选择使用asp.net表单开发的时候就是使用gridview控件。我们正在使用MVC作为javascript框架,并且还没有找到像gridview一样好的控件。我们已经花费了大量的时间来学习、调整和调试,而与使用asp.net服务器端控件相比,效果并不理想。在非asp.net表单开发中,失去了所有微软提供的漂亮小部件是一种自由,但刚开始时也很可怕。
最终,我很高兴我们选择进行MVC开发。我和我的团队学会了一种新的框架(我们之前只是asp.net开发人员),并且亲手体验了html和javascript。这些都是我们可以应用到其他项目或其他语言中的技能。
不要让别人欺骗你,认为这是一个明确的选择。你可以同时兼顾两者。我的方法是创建一个MVC项目,但是不添加视图,而是添加标准的ASP.NET页面,并将代码后台更改为继承自MVC.ViewPage,就像这样:
public partial class SamplePage : System.Web.Mvc.ViewPage
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
如果你在前端代码中只使用带有 runat="server" 属性的单个 form 标签,那么你就可以完全通过代码后台访问标准的 ASP.NET 服务器控件。这意味着你可以完全控制页面的服务端呈现(例如使用数据绑定和重复器),而不必像早期的 ASP 风格代码一样进行编码。
protected void Page_Load(object sender, EventArgs e)
{
IObjectDefinition instance = (IObjectDefinition)ViewData["definition"];
_objectName.Text = instance.DisplayName;//textbox or label
DataTable itemVals = new DataTable();
itemVals .Columns.Add("itemName");
itemVals .Columns.Add("itemValue");
IDictionary<string, string> items = (IDictionary<string, string>)ViewData["items"];
foreach (KeyValuePair<string, string> datum in items)
{
conditions.Rows.Add(new object[] { datum.Key, datum.Value});
}
_itemList.DataSource = itemVals;//repeater
_itemList.DataBind();
}
任何控件的帖子都不是提交到页面,而是提交到控制器。 如果您记得在服务器控件上使用name属性,则它们将以标准MVC的方式出现在FormControl集合中,以访问页面变量。asp:button
按钮将要提交到控制器操作,那么它的点击事件如何执行正确的代码后台事件呢? - Sunil我看到大多数的回复都是在MVC 1.0之前发布的。由于我们现在已经进入了2.0预览版,我认为重新讨论一下可能会很好。
去年三月之前,我是ASP.NET开发人员约五年。但自从我转向MVC后,我没有丝毫后悔。我现在意识到,在ASP.NET WebForms上越强大,学习其他技术(如JavaScript和非Microsoft实现的AJAX)就越困难。微软将他们的ASP.NET开发方法从WinForms开发方法中借鉴过来,这对于从WebForms开发转移而来的人来说有助于降低学习曲线,但如果您理解两种方法之间的差异,那么这并不是一种良好的Web应用程序开发方式。
我正在处理的最新项目要求我学习ASP.NET MVC、JavaScript、jQuery、CSS 2和AJAX(非Microsoft)。只用了九个月,我感到比五年ASP.NET开发后更好地准备好了处理Web开发项目。ASP.NET的实现使得长期维护变得更加困难。MVC使得事情更加容易,因为你不太依赖快捷方式。需要一段时间来学习框架,但你越了解框架,你就越不依赖框架,越能开始学习和理解已经建立的标准,比如JavaScript和AJAX。
对我来说,这是一个明显的选择。我永远不会回到ASP.NET。如果我不能使用ASP.NET MVC,那我就会学习Ruby或PHP。我希望推动我的Web开发工具的进步和发展是由开发者社区的需求而驱动的,而不是为了利润。
ASP.NET MVC仍处于“预览”形式,因此在其成熟之前,我不会考虑它。您可以很容易地自己创建MVP模式,无需太多的管道。
在Ajax方面,我建议尝试查找可以实现您要求的库(商业或其他)。基础知识(网格,树,自动完成文本框等)已经被深入研究过了,不要重复造轮子。
在设计网站时,我更喜欢遵循DRY原则。我认为ASP.NET MVC比Web Forms更符合DRY原则。
最近我从Web Forms转向了MVC,希望再也不用回去了!
当然,这取决于您的项目规模。如果您正在启动一个期望有数百万页面浏览量的5年企业级应用程序,UpdatePanel可能不够用,但如果您正在构建一个普通网站、快速搭建原型或只是需要快速上手,asp.net ajax完全可以胜任,并且学习曲线极低。
并且要明确的是,每次进行ajax调用时,绝对不会返回整个页面,而/仅仅/会发送需要更新的面板内容。任何http监视器都可以证明这一点。是的,页面/生命周期/会被执行,但是您可以构建相当高效的asp.net ajax应用程序。
我的编程经验是在Apache服务器上使用PHP和Ruby编写Web应用程序。当我得到一份维护使用ASP.NET(WebForms)编写的Web应用程序的工作时,我开始学习微软构建Web应用程序的方式。我必须说我完全感到震惊!我在想这些ViewState垃圾来回发送是什么鬼?这真的有必要吗?
然后,我决定尝试使用Ajax和jQuery做一些简单的事情,这让我了解到更新面板和生成客户端ID,而不是我在视图中设置的内容。这浪费了我很多时间!为什么我不能在一个页面上有多个表单?为什么我不能只使用常规的Ajax调用?为什么我的视图有服务器逻辑?这些都是许多Web程序员在使用ASP.NET WebForms时遇到的问题。然后,我发现了.NET MVC。我的生活变得轻松了很多。
我习惯于使用像Rails和CakePHP这样的MVC框架来创建Web应用程序,以便按照它们被设计的方式进行编程。使用实际为Web而设计的技术。
我的建议是,对于那些习惯于编写winforms类型应用程序的人来说,最好使用WebForms,因为它试图抽象出你正在网页上编程的事实。如果你想要真正自由地开发适合网页程序员的应用程序,可以使用.NET MVC或类似的东西,这样就不会妨碍你的工作。为了补充@ben的回答,我使用ASP.Net WebForms进行简单数据绑定,并使用JQuery处理所有Ajax事务。老实说,由于其简单性,我仍然无法放弃数据绑定。Viewstate几乎没有用处,所以我基本上将其关闭。你可以使用MVC,但要注意,它会花费你大部分时间来开发在Forms中认为理所当然的功能。祝你好运!