前言

工作了这么久了,接触ASP.NET MVC已经很久了,一直都想总结一下它的一些实用的,经常使用的一些技巧,但是因为一直都很懒,也不想总结,所以一直都没有好好写出来,趁着现在有这种冲劲,那么就先把它写好吧.

以下都是我对于我来说,觉得比较便捷的代码,当然,我写的东西未必适合所有人,但是至少里面还是有一些比较简单且实用的技巧的.

例子主要是参照   http://www.cnblogs.com/duanshuiliu/tag/ASP.NET/   里面介绍了很多MVC一些很重要而且很常用的东西

代码

因为是边看别人的例子,然后再结合我工作中遇到一些问题,或者用上的一些技巧,所以就组合成了以下的这些代码

先创建以下实体类

    public partial class Person
{
[Display(Name = "加了标签的ID")]
public int PersonId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime BirthDate { get; set; }
public Address HomeAddress { get; set; }
public bool IsHappy { get; set; }
public Role Role { get; set; }
public string Color { get; set; }
public List<Relative> relatvie { get; set; }
} public class Address
{
public string City { get; set; }
public string Country { get; set; }
} public class Relative
{
public string Name { get; set; }
public string RelativeAge { get; set; }
} public enum Role
{
Admin = ,
User = ,
Guest =
}

Person类是主要的类,里面包含了 string类型 int类型 DateTime类型 引用类型 枚举类型 以及集合类型  的属性,在实际工作中,经常都会遇到这些类型,然后需要前后台结合接收数据

以下是控制其中的代码

        public ActionResult StrongModelView(Person person)
{
person.PersonId = ; //对模型进行验证
if (string.IsNullOrWhiteSpace(person.FirstName))
{
ModelState.AddModelError("FirstName", "请输入FirstName");
}

       //
if (ModelState.IsValid)
{
//如果验证都通过了,那么就是怎么怎么
}
else {
//不通过就怎么怎样
} Dictionary<string, int> dic = new Dictionary<string, int>();
foreach (int myCode in Enum.GetValues(typeof(Role)))//
{
string strName = Enum.GetName(typeof(Role), myCode);//获取名称
dic.Add(strName, myCode);
}
//下拉框
SelectList sel = new SelectList(dic, "Value", "Key");//
ViewData["sel"] = sel; //RadioButton
List<string> colors = new List<string>() { "Red", "Green", "Blue" };
ViewData["colors"] = colors; return View(person);
}

以下是Razor视图的代码

    @using (Html.BeginForm("StrongModelView", "home", FormMethod.Post))//
{
//以列表形式输出错误
@Html.ValidationSummary()//
<div>
<table>
<tr>
<td>@Html.LabelFor(c => c.PersonId)</td>//⑦
<td>@Html.DisplayFor(c => c.PersonId)</td>//
</tr>
<tr>
<td>FirstName</td>
<td>@Html.EditorFor(c => c.FirstName)</td>//
</tr>
<tr>
<td>LastName</td>
<td>@Html.TextBoxFor(c => c.LastName)</td> </tr>
<tr>
<td>BirthDate</td>
<td>@Html.EditorFor(c => c.BirthDate)</td>//
</tr>
<tr>
<td>IsHappy</td>
<td>@Html.EditorFor(c => c.IsHappy)</td>//
</tr>
<tr>
<td>Color</td>
<td>@{
List<string> colorss = ViewData["colors"] as List<string>;
foreach (var item in colorss)
{
@item;
@Html.RadioButtonFor(c => c.Color, item);//⑫
}
} </td>
</tr>
<tr>
<td>Role</td>
<td>@Html.DropDownListFor(c => c.Role, ViewData["sel"] as SelectList)</td>//⑬
</tr> <tr style="background-color: #0094ff;">
<td>城市</td>
<td>@Html.Editor("relatvie[0].RelativeAge")@Html.Editor("relatvie[0].Name")</td>//⑭
</tr> <tr>
<td>
<input type="submit" value="提交" /></td>
</tr>
</table> </div> }

常用的或重要的记录

①是添加错误进行到模型的状态中的,如果在前台中使用了错误提示进行接收的话,那么才有用,否则我觉得没什么用,例如像我们公司,直接使用TempData["message"]返回所有的提示信息,包括错误信息

②如果模型绑定都通过了.那么就会是true,如果有模型有绑定不上的,那么就是返回false

③遍历枚举的方法,这个方法应该很多时候都会使用到,所以也记录下来

④在前台如果要接收 一个dropdownList的话,那么就需要使用selectList这个类,然后传入一个字典是最使用key/value的表示的,然后字典对应selectList的应该是"Key","Value",都是大写开头的.(你也可以传出其他IEnumble类型的集合)

⑤这是利用Razor视图创建一个表单,个人感觉其实和普通的html创建的表达的速度是一个的,没什么特别,也不见快很多

⑥如果在action方法中,对模型进行验证,并且返回了错误信息,那么,就可以使用ValidationSummary来进行错误的显示,它会生成一个ul进行显示的,个人还是觉得没什么用

⑦HTML.Labal()则只是显示该字段的名称,除非在强类型视图的这个类的属性上添加Display(Name="xxx")的标签,否则都是只显示字段的名称

⑧HTML.Display()显示的是字段对应的value值

⑨EditorFor会根据返回的类型,生成相应的input标签,并且生成的Name和ID与字段的名称是相对应的,例如bool型就生成checkbox,datetme就生成datetime型的

⑫主要为了如何显示radio button的列表出来,主要是根据由相同的name所以构成相同的,会提交选中的,

⑬主要是由后端返回一个selectList 然后在前端接收相应的selectList 这个selectList就是组成列表的选项

⑭有时候,我们在后端需要直接接收一个列表,那么这个时候就是应该使用索引器进行接收

杂七杂八的总结

  • 如果是直接根据填入的条件进行查询的,那么就使用get请求,如果是对数据进行加工的,那么使用post请求,get的请求主要是返回页面的, 所以如果查询就是相对合理点.
  • 对于路径的操作:1.URL.Action()生成的/home/index这样的路径,但是HTML.ActionLink()就是生成a标签了,因为带了HTML,其实就是html的帮助函数

感言

初次写博客..感觉写到乱七八糟,各种编辑器不会用,各种排版不会用,其实写博客主要是记录一下自己一些遇到的问题,以及使用的技巧,很多东西都是针对我自己个人而已,所以有时候难免会让其他人看不懂,请见谅.

ASP.NET MVC 自我总结的便捷开发实例的更多相关文章

  1. C#/ASP.NET MVC微信公众号接口开发之从零开发(四) 微信自定义菜单(附源码)

    C#/ASP.NET MVC微信接口开发文章目录: 1.C#/ASP.NET MVC微信公众号接口开发之从零开发(一) 接入微信公众平台 2.C#/ASP.NET MVC微信公众号接口开发之从零开发( ...

  2. C#/ASP.NET MVC微信公众号接口开发之从零开发(三)回复消息 (附源码)

    C#/ASP.NET MVC微信接口开发文章目录: 1.C#/ASP.NET MVC微信公众号接口开发之从零开发(一) 接入微信公众平台 2.C#/ASP.NET MVC微信公众号接口开发之从零开发( ...

  3. ASP.NET MVC+EasyUI+Entity FrameWork 整合开发

    本文详细讲解怎么用ASP.NET MVC+EasyUI+Entity FrameWork 来开发一个项目 对于ASP.NET MVC的Jscript库,主要引用 <script type=.mi ...

  4. Cordova+Asp.net Mvc+GIS跨平台移动应用开发实战1-系统初步搭建(附演示,apk,全部源码)

    1.前言 身处在移动互联网的今天,移动应用开发炙手可热,身为程序猿的我们怎么能错过开发一款我们自己的APP.本人算是一个基于.net的GIS开发入门者(马上就大四啦), 暑假在学校参加GIS比赛有大把 ...

  5. ASP.NET MVC和EF集成AngularJS开发

    参考资料: 如何在ASP.NET MVC和EF中使用AngularJS AngularJS+ASP.NET MVC+SignalR实现消息推送 [AngularJs + ASP.NET MVC]使用A ...

  6. C#/ASP.NET MVC微信公众号接口开发之从零开发(二) 接收微信消息并且解析XML(附源码)

    文章导读: C#微信公众号接口开发之从零开发(一) 接入微信公众平台 微信接入之后,微信通过我们接入的地址进行通信,其中的原理是微信用户发送消息给微信公众账号,微信服务器将消息以xml的形式发送到我们 ...

  7. C#/ASP.NET MVC微信公众号接口开发之从零开发(一) 接入微信公众平台

    微信公众平台接入:其实很简单,把两个参数(地址和token)填入微信公众平台后台,暂时选择明文模式 ,其中token自己定义.微信服务器会根据后台填写的地址访问,并且带上对于的参数 如 url+&am ...

  8. ASP.NET MVC 之各种jQuery提交模式实例

    1.$.ajax提交 var _data = { "dictItemID": dictItemID, "itemType": itemType, "i ...

  9. 使用Visual Studio 2015 开发ASP.NET MVC 5 项目部署到Mono/Jexus

    最新的Mono 4.4已经支持运行asp.net mvc5项目,有的同学听了这句话就兴高采烈的拿起Visual Studio 2015创建了一个mvc 5的项目,然后部署到Mono上,浏览下发现一堆错 ...

随机推荐

  1. 在ubuntu12.04下编译android4.1.2添加JNI层出现问题

    tiny4412学习者,在ubuntu12.04下编译android4.1.2添加JNI层出现问题: (虚心请教解决方法) trouble writing output: Too many metho ...

  2. 队列的实现(JAVA)

    定义    队列(queue)是一种特殊的线性表,它只允许在表的前端进行删除,在表的后端进行插入. 进行插入端的称为队尾,进行删除端的称为队头.队列是先进先出原则的.队列的实现同样可以 使用两种方式来 ...

  3. CopyOnWriteArrayList与Collections.synchronizedList的性能对比

    列表实现有ArrayList.Vector.CopyOnWriteArrayList.Collections.synchronizedList(list)四种方式. 1 ArrayList Array ...

  4. JVM Monitoring: JMX or SNMP?

    JVM Monitoring: JMX or SNMP? By daniel on Feb 23, 2007 Since JavaTM SE 5.0, the JRE provides a means ...

  5. SIFT算法:确定特征点方向

    SIFT算法:DoG尺度空间生产  SIFT算法:KeyPoint找寻.定位与优化 SIFT算法:确定特征点方向  SIFT算法:特征描述子 目录: 1.计算邻域梯度方向和幅值 2.计算梯度方向直方图 ...

  6. 动态规划(区间DP):HDU 5115 Dire Wolf

    Dire wolves, also known as Dark wolves, are extraordinarily large and powerful wolves. Many, if not ...

  7. How to make project not set to be build

    1.BUILD->Configuration Management... 2. When you guys add new projects to the kiosk solution plea ...

  8. TOAD Menu Shortcuts 快捷键

    TOAD Menu Shortcuts Category Command Shortcut Conflict File AWR Browser File Compare Files File DBMS ...

  9. 一些简单的css和js知识

    这几天主要做的是前端网页的调整和页面UI的优化方面的内容.这中间主要是学习了一些基本的HTML和css样式的基本元素的属性.设置行高的line-heght属性,设置窗口的浮动用position属性,设 ...

  10. (转载)反编译android的apk文件步骤

    下面的方法我已经尝试过,完全可以成功,重点的步骤我在这里说一下 1.必须要有java环境,记得配置好环境变量 2.如果只查看class中的函数文件,只需要下载dex2jar和jd-gui 3.下载地址 ...