前言

工作了这么久了,接触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. 【CF】310 Div.1 C. Case of Chocolate

    线段树的简单题目,做一个离散化,O(lgn)可以找到id.RE了一晚上,额,后来找到了原因. /* 555C */ #include <iostream> #include <str ...

  2. bzoj1197

    水题,画个图推一下低维的就什么都明白了 从低维类推高维 ..,..] of int64; n,m,j,i:longint; begin readln(m,n); to n do f[i,]:=; to ...

  3. 使用GDI+轻松创建缩略图

    Gdi+ 还是相当好用的. 1> Image保存图像,需要一个CLSID的参数,它可以这样获得: int   GetEncoderClsid(const   WCHAR*   format,   ...

  4. Hadoop RPC源码阅读-服务端Server

    Hadoop版本Hadoop2.6 RPC主要分为3个部分:(1)交互协议 (2)客户端(3)服务端 (3)服务端 RPC服务端的实例代码: public class Starter { public ...

  5. mac上做透明图片, png, alpha

    现在OS X中自带的[预览]功能十分强大,我们甚至可以通过预览来直接制作一些透明效果的PNG图片,当做图片素材(例如图标)使用.这里要用到的是[预览]中的“即时Alpha”工具. -首先我们要使用预览 ...

  6. Makefile自动生成头文件依赖

    前言 Makefile自动生成头文件依赖是很常用的功能,本文的目的是想尽量详细说明其中的原理和过程. Makefile模板 首先给出一个本人在小项目中常用的Makefile模板,支持自动生成头文件依赖 ...

  7. Tree HDOJ--2682

    Tree Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  8. [原]RobotFrameWork(十一)AutoItLibrary测试库在win7(64bit)下安装及简单使用

    最近安装AutoItLibrary,发现在win7 x64下无法安装成功,后来经过定位,发现是3rdPartyTools\AutoIt目录下面AutoItX3.dll的问题.因为AutoItX3.dl ...

  9. BWT(Burrows-Wheeler Transformation)的讲解及java实现

    BWT(Burrows-Wheeler Transformation) 1.什么是BWT 压缩技术主要的工作方式就是找到重复的模式,进行紧密的编码. BWT(Burrows–Wheeler_trans ...

  10. ll 命令不好用了,ls 命令没有颜色了怎么办

    可以通过以下命令来实现‘ll’的功能: echo "alias ll='ls -l'" >> ~/.bashrc 其实这个命令是给‘ls -l’命令起了个别名‘ll’, ...