主要是总结最近写过的代码和用过的工具。
- MVC
- C#
- DevExpress(gridview)
1. MVC
这里的MVC,特指ASP.net MVC
- Model:一组类,描述一组要处理的数据和处理规则,也就是操作对象;
- View:定义显示给用户的程序界面;
- Controller:一组类,响应用户的输入,读取Model中的数据,将对应的View返回给用户。
参考:
[1]《ASP.NET MVC5 高级编程 第五版》
[2] 快速了解mvchttps://www.asp.net/mvc/overview/getting-started/introduction/adding-a-view
1.1 MVC中Razor的语法
关键是@
参考:
[1] https://www.asp.net/web-pages/overview/getting-started/introducing-razor-syntax-c
1.2 viewdata
在controller和view之间传递数据
1.2 gethtml和render的用法
在Razor Views中使用DevExpress插件会用到。
You can declare DevExpress extensions within View pages by using either expression syntax (@ or @()) or code block syntax (@{}). (参考[在view中使用DevExpres][1])
参考:
[1]:Using Extensions in Razor Views
[2] https://www.devexpress.com/Support/Center/Question/Details/Q388623
1.3 Html.RenderPartial和Html.Partial
Partial辅助方法用于将部分视图渲染成字符串。
RenderPartial辅助方法与partial非常相似,但RenderPartial不是返回字符串,而是直接写入响应输出流。因此,必须把RenderPartial放入代码块中,而不能放在代码表达式中。
以下是用法的不同:
@{ Html.RenderPartial(“test”); }
@Html.Partial(“test”);
一般而言,选择partial,因为partial更方便,不需要大括号(参考书给出这样的解释也是醉了),另外RenderPartial效率高(何以见得?)。
Html.Action和Html.RendRenderAction的区别:
Html.Action:执行单独的控制器操作,将控件嵌入到View中;
Html.RendRenderAction:调用Controller中的Action方法,并将返回的结果直接显示在当前调用的view中。
参考:
[1] ASP.NET MVC5高级编程(第五版)
2. C#部分用法
2.1 泛型
类似于C++中的模板,常用的两种泛型:
- List
- Dictionary
2.2 反射
表示简单用过,获取一个类中的自定义特性
2.3 Linq(Language Integrated Query)
Linq查询表达式,必须以from子句开头,以select或group子句结束。
参考:
[1] 《C#入门经典 第六版》
[2] 《C#高级编程 第七版》
3. DevExpres
3.1 GridView和FormLayout
GridView使用,可参考官网的demo,DevExpress GridView的使用demo
GridView自带默认的表格显示方式
- 在controller中设置GridView的显示效果。
1 | public override GridViewSettings GetGridViewSettings(HtmlHelper helper) { |
- 在对应的View的cshtml文件中,使用FormLayout,设置添加、编辑时的显示效果。
1 | @{Html.DevExpress().FormLayout(formLayoutSettings => { |
GridView常用的几个方法
新增行: grid.AddNewRow();
获取行索引:grid.GetFocusedRowIndex();
编辑行: grid.StartEditRow(index);
获取行主键:grid.GetRowKey(grid.GetFocusedRowIndex());
删除等操作执行后,用户可以看到反馈。
ASPxGridView1.JSProperties.Remove(“cpMsg”);
ASPxGridView1.JSProperties.Add(“cpMsg”, “删除成功”);
注意:按Dev控件约定,此处添加JSProperties,只能以 cp为前缀。(再补充)
3.2 callback方法的使用
不局限于GridView,任何带有callback方法的控件,比如callbackpanel、comboBox等。
首先,callback什么时候用。
一个是高效显示或者更新控件内容(减少初始化时传递的数据),一个是执行需要较长时间的操作(如文件上传等)。
其次,callback怎么用。
一个控件以callback模式使用的要求:
- 这个控件定义在一个独立的部分视图中;
- 一个controller中定义一个方法处理该控件的callback,并返回一个包含该控件的部分视图,这样可以根据终端用户的不同操作改变控件提供的内容;
- Callback的执行路径应该用callbackroutes来定义,这个属性允许为该控件指定对应的controller和action。
参考:
[1] callbacks简介 https://documentation.devexpress.com/#AspNet/CustomDocument9052
[2] callbacks传递参数 https://documentation.devexpress.com/#AspNet/CustomDocument9941
[3] callbackpanel的使用 https://documentation.devexpress.com/#AspNet/CustomDocument9000
3.3 clientsideevents事件
控件自带客户端事件,比如combobox、textbox等都有,提供对用户操作的支持。
注册事件;
1
2
3
4
5
6
7
8
9@Html.DevExpress().Menu(
settings =>
{
settings.Name = "menu1";
settings.EnableClientSideAPI = true;
settings.Items.Add("Visa");
settings.Items.Add("MasterCard");
settings.ClientSideEvents.ItemClick = "MenuItemClick";
}).GetHtml()用js方法来响应用户注册的事件;
1
2
3
4
5<script type="text/javascript">
function MenuItemClick(s, e) {
textBox1.SetText(e.item.GetText());
}
</script>js方法中两个参数,s是注册该事件的控件,e是该事件的参数。
控件的ClientInstanceName,这样就可以在前端操作对应的dev控件;
参考:
[1] https://documentation.devexpress.com/#AspNet/CustomDocument9150
[2] https://documentation.devexpress.com/#AspNet/CustomDocument9448