ASP.NET MVC 自我总结的便捷开发实例

前言

工做了这么久了,接触ASP.NET MVC已经好久了,一直都想总结一下它的一些实用的,常常使用的一些技巧,可是由于一直都很懒,也不想总结,因此一直都没有好好写出来,趁着如今有这种冲劲,那么就先把它写好吧.html

如下都是我对于我来讲,以为比较便捷的代码,固然,我写的东西未必适合全部人,可是至少里面仍是有一些比较简单且实用的技巧的.前端

例子主要是参照   http://www.cnblogs.com/duanshuiliu/tag/ASP.NET/   里面介绍了不少MVC一些很重要并且很经常使用的东西后端

代码

由于是边看别人的例子,而后再结合我工做中遇到一些问题,或者用上的一些技巧,因此就组合成了如下的这些代码app

先建立如下实体类编辑器

    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 = 1,
        User = 2,
        Guest = 3
    }

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

 

如下是控制其中的代码post

        public ActionResult StrongModelView(Person person)
        {
person.PersonId
= 123; //对模型进行验证 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视图的代码ui

    @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>

    }

 

经常使用的或重要的记录spa

①是添加错误进行到模型的状态中的,若是在前台中使用了错误提示进行接收的话,那么才有用,不然我以为没什么用,例如像咱们公司,直接使用TempData["message"]返回全部的提示信息,包括错误信息code

②若是模型绑定都经过了.那么就会是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的帮助函数

 

感言

初次写博客..感受写到乱七八糟,各类编辑器不会用,各类排版不会用,其实写博客主要是记录一下本身一些遇到的问题,以及使用的技巧,不少东西都是针对我本身我的而已,因此有时候不免会让其余人看不懂,请见谅.

相关文章
相关标签/搜索