随笔分类 - ASP.NET MVC
摘要:在MVC中,当涉及到强类型编辑页,如果有select元素,需要根据当前Model的某个属性值,让Select的某项选中。本篇只整理思路,不涉及完整代码。□ 思路往前台视图传的类型是List,把SelectListItem选中项的Selected属性设置为true,再把该类型对象实例放到ViewBag,ViewData或Model中传递给前台视图。 通过遍历List类型对象实例□ 控制器public ActionResult SomeAction(int id){ //从数据库获取Domain Model var domainModel = ModelService.LoadEnti...
阅读全文
摘要:通过实现IRouteConstraint接口,实现对某个控制名进行限制。本篇把重点放在自定义约束,其余部分参考: MVC自定义路由01-为什么需要自定义路由 自定义约束前 using System.Web.Mvc; using System.Web.Routing; using MvcApplication2.Extension; namespace MvcA...
阅读全文
摘要:本篇体验自定义路由以及了解为什么需要自定义路由。 准备 □ View Models using System.Collections.Generic;namespace MvcApplication2.Models{ //单位 public class Unit { public int ID { get; set; } public RentalP...
阅读全文
摘要:本篇体验使用$.ajax()加载部分视图。与加载部分视图相关的包括: RenderPartial和RenderAction区别 使用jquery加载部分视图01-使用$.get() □ HomeController public class HomeController : Controller { public ActionRes...
阅读全文
摘要:使用Html.RenderParital或Html.RenderAction可以在主视图中加载部分视图。 两种方法是有区别的,在"RenderPartial和RenderAction区别"中体验过。本篇体验使用jquery加载部分视图。 □ HomeControllerusing System.Web;using System.Web.Mvc;using _01.Models;namespace _01.Controllers{ public class HomeController : Controller { public ActionResult Index()...
阅读全文
摘要:本篇体验使用"jQuery结合Html.BeginForm()"对复杂类型属性进行异步验证。与本篇相关的"兄弟篇"包括: MVC验证08-jQuery异步验证 MVC验证09-使用MVC的Ajax.BeginForm方法实现异步验证 MVC验证10-到底用哪种方式实现客户端服务端双重异步验证 准备工作 □ js方面:1、jquery的某个版本2、jquery.validate.js3、jqu...
阅读全文
摘要:本篇将通过一个案例来体验使用MVC的Ajax.BeginForm或jQuery来实现异步提交,并在客户端和服务端双双获得验证。希望能梳理、归纳出一个MVC异步验证的通用解决思路。本篇主要涉及:1、通过Ajax.BeginForm()方式,返回部分视图显示验证信息。2、通过jQuery+Html.BeginForm()方式,返回部分视图显示验证信息。3、通过jquery,返回json字符串,json字符串中包含部分视图及验证信息。此外,如下2篇是本文的"兄弟篇",只不过没有像本篇这样把多种实现方式放在一个案例中实现。MVC验证08-jQuery异步验证:通过jquery,返回
阅读全文
摘要:MVC内置的视图引擎有WebForm view engine和Razor view engine,当然也可以自定义视图引擎ViewEngine。本文想针对某个Model,自定义该Model的专属视图。□ 思路1、控制器方法返回ActionResult是一个抽象类 2、ActionResult的其中一个子类ViewResult,正是她使用IView实例最终渲染出视图 3、需要自定义IView 4、IViewEngine管理着IView,同时也需要自定义IViewEngine 5、自定义IViewEngine是需要全局注册的□ IView接口public interface IV...
阅读全文
摘要:MVC中,关于往后台提交的方法有: 1、Html.BeginForm():同步 2、Ajax.BeginForm():异步 3、js或jQuery提交后台 本文体验Ajax.BeginForm()方法。 View model using System; using System.ComponentModel.DataAnnotations; name...
阅读全文
摘要:本文主要体验通过jQuery异步验证。在很多的教材和案例中,MVC验证都是通过提交表单进行的。通过提交表单,可以很容易获得验证出错信息。因为,无论是客户端验证还是服务端验证,总能找到与Model属性或验证特性对应的html元素和属性,并把错误信息显示出来。可是,在实际项目中,经常会遇到需要异步提交的情况。那么,如何把服务端的验证错误信息传递给前端视图呢?□ 思路1、服务端的验证错误信息是可以收集起来的以json形式传递个视图的。2、服务端把错误信息存放在一个字典集合Dictionary,让key是属性名,value是错误信息。3、前台视图中,显示错误信息的元素id,比方说是Err_Name,当
阅读全文
摘要:在一般的自定义验证特性中,我们通过继承ValidationAttribute,实现IClientValidatable,只能完成对某个属性的自定义验证。使用IValidatableObject可以完成Model级别的验证。 □ 实现IValidatableObject接口的Model public class RegisterModel : IValidatableObject{ publi...
阅读全文
摘要:本文体验自定义错误信息。 系统默认的错误信息 在"MVC验证02-自定义验证规则、邮件验证"中,我们自定义了一个验证Email的类。如果输入邮件格式错误,出现系统默认的报错信息。 效果: 通过ErrorMessage来修改错误信息 [Email(ErrorMessage = "Email格式错误")] [Display(Name ...
阅读全文
摘要:本文体验2个属性值不等。即当一个属性输入值,另外一个属性输入的值不能和第一个属性值相等。相关文章包括: MVC验证01-基础、远程验证 MVC验证02-自定义验证规则、邮件验证 MVC验证03-自定义验证规则、禁止输入某些值 MVC验证04-自定义验证规则、日期范围验证 自定义验证特性,继承ValidationAttribute并实现IClientValidatable 这次重写了基类的Is...
阅读全文
摘要:本文体验范围验证。与本文相关的包括: MVC验证01-基础、远程验证 MVC验证02-自定义验证规则、邮件验证 MVC验证03-自定义验证规则、禁止输入某些值 当需要对字符串长度进行验证,可以用StringLength:[StringLength(100, ErrorMessage = "{0} 必须至少包含 {2} 个字符。", MinimumLength = 6)] 当需要对数组范围进行验...
阅读全文
摘要:本文继续体验自定义验证规则,需求是禁止输入某些值。本文与前2篇相关,请参考:MVC验证01-基础、远程验证 MVC验证02-自定义验证规则、邮件验证 自定义验证特性继承ValidationAttribute,并实现IClientValidatable接口 展开using System.ComponentModel.DataAnnotations;using System.Web.Mvc;na...
阅读全文
摘要:本文体验MVC自定义验证特性,来实现对邮件的验证。对于刚写完的自定义验证特性,起初只能支持后端验证。如果要让前端jquery支持,还必须对jquery的验证进行扩展。本文与"MVC验证01-基础、远程验证"相关,如有需要,请参考。当我们验证有关Email属性的时候,我们可能这样写:[RegularExpression(@"\w.+\@\w.+")]public string Email { get; set; }这仅仅考虑了@符号,但这还不够,我们又可能这样写:[RegularExpression(@"^[\w-]+(\.[\w-]+)*@([
阅读全文
摘要:本文体验MVC服务端和客户端验证。主要涉及:※ 基础验证※ 远程验证1个或多个属性及注意点 基础体验 创建MVC4的Internet项目,本身包含了基本的Model,Views,Controller. □ Model打上验证特性 展开 public class RegisterModel { [Required] [StringLength(3, Mini...
阅读全文
摘要:本文体验与勾选有关的特性。 需要加载的books.json 展开{ "total": 4, "rows": [ { "productid": "FI-SW-01", "productname": "Koi", "unitcost": 10.00, "status": "P", "listprice": 36.50, "attr...
阅读全文
摘要:本文体验datagrid的排序。 □ 思路 当点击datagrid的标题,视图传递给Controller的Form Data类似这样:page=1&rows=10&sort=CustomerID&order=asc。为了应对变化,把关于分页的封装成基类,其他关于排序或搜索的封装成继承该基类的子类。再把这些子类对象实例传递给服务层方法。 相关Model 展开 //显示表相关 publ...
阅读全文
摘要:本文主要通过一个子datagrid来实现主次表。谢谢Kevin的博文。 代码部分与http://www.cnblogs.com/darrenji/p/3576258.html相似,这里只列出不一样的地方。 最终效果: ProductController 让子表Product返回json字符串 public ActionResult GetJsonByCategory(int?...
阅读全文