Webform和MVC,为什么MVC更好一些

Webform和MVC,为什么MVC更好一些,第1张

(1)为什么使用MVC而不是用WebForm呢?这个是我临时想的,因为我就是想说明一下WebForm和MVC的优缺点,来可以使大家能够更好地理解MVC和WebForm,而不像某些人说MVC会替代WebForm,我个人认为这个可能性很小,因为各有各的好处,看在哪里使用吧,下面我就简单介绍下WebForm和MVC的优缺点。
(2)WebForm介绍
1)优点
1):支持事件模型,取决于微软提供了丰富的服务器端组建,WebForm可以快速的搭建Web应用。
2):使用非常方便,入门也很容易,但是要了解底层还是要付出很大的努力的,这就是我们NET程序员被称为只会拖控件的原因。
3):微软提供了很大的一部分控件,也有很多公司开发出来了很多的控件来供我们程序员使用。
2)缺点
1):封装性特强,很多从底层封装出来的东西让我们初学者不是非常明白。
2):入门非常容易,但是如果不研究底层的话提升非常困难,所以我们一定有时间的话要研究底层。
3):复杂的生命周期模型学习起来并不是非常的容易,好多事件。
4):控制不是非常的灵活,服务器控件的控制非常不容易。
5):ViewState处理,在请求和响应之间来回的传递,当我们使用WebForm开发完网站之后,我们可以在浏览器中右键查看源代码会看到很多的ViewState,非常浪费资源和浪费服务器宽带。
6):异步请求的时候每个请求后台必须都有一个一般处理程序或者aspx页面对应。
(3)MVC
1)优点
1):MVC很容易的将复杂的应用分成M,V,C三个组件模型相对应,通过Model,View,Controler有效的简化了复杂的架构,体现了非常好的隔离原则。
2):因为没有使用server-based forms(事件响应模型),所以能够使我们程序员控制起来更加的灵活,页面更加的干净。
3):可以控制自定义的URL,也就是MVC中的路由机制,这可以说是MVC的一个亮点,再也不用我们在WebForm时代的配置静态页的过程了。而且对于SEO友好。能够更加的利用网络爬虫。
4):强类型的View实现,更加的安全,更加的可靠,更加的高效。
5):让Web开发者(程序员)可以更加的专注某一个层的开发,有利于我们分工配合使用大型架构的开发。
6):MVC下面对异步的处理更加有一个很好的支持,一个控制其下面可以有很多action,而每个action对应的可以有不同的请求。
7):MVC的校验非常的好,我们只需要给每个方法打入节点就可以实现不能为空等校验。
[requred]
Public string Name{get;set;}
8):表单提交的时候,提供了自动装配的功能。
9):微软提供了很多全局的过滤器(身份校验过滤器,异常过滤器,Action过滤器,视图结果过滤器),这些都是MVC带来的新功能,使我们的开发能够更加的快速开发。

通过Paint中大量的setter方法来为画笔设置属性:
这些属性大多我们都可以见名知意,很好理解,即便如此,哥还是带大家过一遍逐个剖析其用法,其中会不定穿插各种绘图类比如Canvas、Xfermode、ColorFilter等等的用法。
set(Paint src)
顾名思义为当前画笔设置一个画笔,说白了就是把另一个画笔的属性设置Copy给我们的画笔,不累赘了
setARGB(int a, int r, int g, int b)
setAlpha(int a)
setAntiAlias(boolean aa)
setColor(int color)
setColorFilter(ColorFilter filter)
设置颜色过滤

MVC不用控件的最大原因就是没有视图状态,这样页面轻啊,也很高效。
解决你这个问题有2种方式:1使用ajax异步(推荐)2:直接使用<asp:控件名></asp:控件名>好了

WEB服务器控件是HTML控件的一种扩展,区别是:
1)前者可以触发服务器控件特有的事件,后者只能通过回递的方式触发服务器上的页面级事件。
2)输入到前者中的数据在请求之间可以维护(即具有状态管理功能),而后者无法自动维护数据,只能使用页面级的脚本来保存和恢复。
3)前者可以自动检测浏览器并调整到恰当的显示,而后者没有自动适应功能,必须在代码中手动检测浏览器。
4)每个服务器控件都具有一组属性,可以在服务器端的代码中更改控件的外观和行为,而后者只有HTML属性。
如果某些控件不需要服务器端的事件或状态管理功能时,可以选择HTML控件,这样可以提高应用程序的性能
百度搜索里面不是很多这样的问题吗 。 就如我最后所说的,在不是一定需要使用服务器控件的时候最好用html控件,因为每次页面运行,里面的服务器控件会向服务器里请求数据及其他,这里会占用一定的资源时间。 如有问题请追问。

您好,这样:
//实现对DataGird控件的绑定 *** 作
function InitGrid(queryData) {
$('#grid')datagrid({ //定位到Table标签,Table标签的ID是grid
url: '/Menu/FindWithPager', //指向后台的Action来获取当前菜单的信息的Json格式的数据
title: '功能菜单',
iconCls: 'icon-view',
height: 650,
width: function () { return documentbodyclientWidth 09 },
nowrap: true,
autoRowHeight: false,
striped: true,
collapsible: true,
pagination: true,
pageSize: 100,
pageList: [50,100,200],
rownumbers: true,
//sortName: 'ID', //根据某个字段给easyUI排序
sortOrder: 'asc',
remoteSort: false,
idField: 'ID',
queryParams: queryData, //异步查询的参数
columns: [[
{ field: 'ck', checkbox: true }, //选择
{ title: '显示名称', field: 'Name', width: 200},
{ title: '图标', field: 'Icon', width: 150 },
{ title: '排序', field: 'Seq', width: 80 },
{ title: '功能ID', field: 'FunctionId', width: 80 },
{ title: '菜单可见', field: 'Visible', width: 80 },
{ title: 'Winform窗体类型', field: 'WinformType', width: 400 },
{ title: 'Web界面Url地址', field: 'Url', width: 200 },
{ title: 'Web界面的菜单图标', field: 'WebIcon', width: 120 },
{ title: '系统编号', field: 'SystemType_ID', width: 80 }
]],
toolbar: [{
id: 'btnAdd',
text: '添加',
iconCls: 'icon-add',
handler: function () {
ShowAddDialog();//实现添加记录的页面
}
}, '-', {
id: 'btnEdit',
text: '修改',
iconCls: 'icon-edit',
handler: function () {
ShowEditOrViewDialog();//实现修改记录的方法
}
}, '-', {
id: 'btnDelete',
text: '删除',
iconCls: 'icon-remove',
handler: function () {
Delete();//实现直接删除数据的方法
}
}, '-', {
id: 'btnView',
text: '查看',
iconCls: 'icon-table',
handler: function () {
ShowEditOrViewDialog("view");//实现查看记录详细信息的方法
}
}, '-', {
id: 'btnReload',
text: '刷新',
iconCls: 'icon-reload',
handler: function () {
//实现刷新栏目中的数据
$("#grid")datagrid("reload");
}
}],
onDblClickRow: function (rowIndex, rowData) {
$('#grid')datagrid('uncheckAll');
$('#grid')datagrid('checkRow', rowIndex);
ShowEditOrViewDialog();
}
})
};
对于查询按钮触发的数据后台查询及数据绑定 *** 作,javascript代码如下所示:
//绑定查询按钮的的点击事件
function BindSearchEvent() {
//按条件进行查询数据,首先我们得到数据的值
$("#btnSearch")click(function () {
//得到用户输入的参数,取值有几种方式:$("#id")combobox('getValue'), $("#id")datebox('getValue'), $("#id")val()
//字段增加WHC_前缀字符,避免传递如URL这样的Request关键字冲突
var queryData = {
WHC_ID: $("#txtID")val(),
WHC_Name: $("#txtName")val(),
WHC_Icon: $("#txtIcon")val(),
WHC_Seq: $("#txtSeq")val(),
WHC_FunctionId: $("#txtFunctionId")val(),
WHC_Visible: $("#txtVisible")val(),
WHC_WinformType: $("#txtWinformType")val(),
WHC_Url: $("#txtUrl")val(),
WHC_WebIcon: $("#txtWebIcon")val(),
WHC_SystemType_ID: $("#txtSystemType_ID")val()
}
//将值传递给
InitGrid(queryData);
return false;
});
}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zz/12635361.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-27
下一篇 2023-05-27

发表评论

登录后才能评论

评论列表(0条)

保存