今年一直在做一个mvc的项目,现在已经初具规模,适时的总结一下,也算是对MVC框架的一次更深入的研究。

由于时间以及成员技术水平的原因,在开发过程中,一直秉持:完成功能为第一,然后再完善其他的准则。作为开发人员之一,很明白,其实有一些技术的应用都有待商榷。但是没办法,个人还是要服从集体利益的,这也就是体现的团队合作精神。还有一个原因,因为应用新技术,边学边用,内心始终是充满敬畏的。每次当找到了一个问题的解决方案后,就迫不及待应用之,没去加入更多的思考。有一些地方,明知道有更好的解决方式,或者说,有一些地方,已经偏离了MVC的定义范畴,但是依然在使用。

首先是关于提交的问题。

分为get和post两种方式。

着重说一下在本项目中post所采用的的几种方式:

一、JS提交

1、先用controller中的Action初始化View(表单,cshtml)

public ActionResult Index(){

return View();

}

2、用JS进行验证,获取表单的值,然后调用后台方法(Controller中的方法)进行处理。

二、Model Binder

1、

[AcceptVerbs(HttpVerbs.Get)]

public ViewResult RSVPForm()

{

    return View();

}

[AcceptVerbs(HttpVerbs.Post)]

public ViewResult RSVPForm(GuestResponse guestResponse)

{

    return View("Thanks", guestResponse);

}

2、前一个方法初始化表单页面。第二个方法Post提交。

3、参数只需要一个对象,如果是新增信息,ID不允许为空,但是数据确实没有ID值,就需要做如下处理:

public ViewResult RSVPForm([Bind(Exclude="ID")]GuestResponse guestResponse)

这样,在执行验证时, ModelState.IsValid才可以为true:

4、这样有一个需要注意的,就是cshtml文件中,各个属性的名字必须一一对应。

三、UpdateModel方式

这个方式使用起来很简单,在Action中甚至不需要参数,直接:UpdateModel(islandV, this.Request.Form.AllKeys)即可,其中islanV是ViewModel模型。

后两种方式,写起来很简单,不用再写一次页面值到ViewModel的转换过程,但是有些不便之处,就是当前台对应的“控件”传递过来的值和ViewModel的值不是一种类型的时候,就会发生值错误。

比如前台的Dropdownlist绑定的Key和Value都是string类型,但是ViewModel中定义的是bool,就不能很好的正确转化。

不断探索中,本篇文章也会一直保持更新.......

转载于:https://www.cnblogs.com/xyang/archive/2011/11/24/2261418.html

MVC的Model Binder总结相关推荐

  1. ASP.NET MVC2之Model Binder

    Model Binder在Asp.net MVC中非常简单.简单的说就是你控制器中的Action方法需要参数数据:而这些参数数据包含在HTTP请求中,包括表单上的Value和URL中的参 数等.而Mo ...

  2. Asp.net MVC使用Model Binding解除Session, Cookie等依赖

    上篇文章"Asp.net MVC使用Filter解除Session, Cookie等依赖"介绍了如何使用Filter来解除对于Session, Cookie的依赖. 其实这个也可以 ...

  3. MVC中Model BLL层Model模型互转

    MVC中Model BLL层Model模型互转 一. 模型通常可以做2种:充血模型和失血模型,一般做法是模型就是模型,不具备方法来操作,只具有属性,这种叫做失血模型(可能不准确):具备对模型一定的简单 ...

  4. ASP.“.NET研究”NET MVC 3 —— Model的使用?

    昨天博客发了新文章,讲一下我对如何使用MVC中的Model的看法,不是什么大技术,当是一个技术讨论^^ 原文地址:http://www.youguanbumen.net/Article.aspx?id ...

  5. 用C#实现MVC(Model View Control)模式介绍

    用C#实现MVC(Model View Control)模式介绍 作者:Matthew Cochran December 12, 2005 原文地址:http://www.c-sharpcorner. ...

  6. ASP.NET MVC传递Model到视图的多种方式之通用方式的使用

    ASP.NET MVC传递Model到视图的多种方式总结--通用方式的使用 有多种方式可以将数据传递到视图,如下所示: ViewData ViewBag PartialView TempData Vi ...

  7. MVC的Model层验证(非空,手机号验证)

    在用MVC做项目的时候,我们常常需要做用户登录注册的一些提示,比如手机号格式不正确,邮箱不正确,用户名不能为空等.今天先总结下在MVC的Model层中实现注册的验证.若有问题,欢迎大家指出. 第一步: ...

  8. MVC(Model View Controller)框架

    MVC框架 同义词 MVC一般指MVC框架 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一 ...

  9. Spring MVC的Model和ModelMap使用

    一 控制器 package org.fkit.controller;import org.fkit.domain.User; import org.springframework.stereotype ...

最新文章

  1. 异步多线程(五)多线程异常处理
  2. 山重水复疑无路,柳暗花明又一村
  3. java 音频对比_java – 比较两个不同的音频文件不起作用
  4. Windows 64位下安装Redis超详细教程
  5. spark的三大数据结构
  6. android 创建typeface 对象,java – 检查Android中的Typeface对象的族
  7. 黑马程序员Java零基础视频教程(2022最新Java)B站视频学习笔记-Day1-Java入门
  8. python制作一个超强的加密软件
  9. 使用LaTeX写论文
  10. ewebeditor php漏洞,ewebeditor for php任意文件上传漏洞
  11. 关于word-break和word-wrap的使用和区别
  12. 中国平安上半年归母净利润976.76亿元,同比增长68.1%
  13. IE和firefox上传文件mime类型的设置
  14. android认证失败怎么办,小米VIP认证失败怎么办
  15. UI设计文字排版四大原则
  16. react 对象克隆_如何使用React&GraphQL(Dune World Edition)创建全栈Yelp克隆
  17. 欧尼酱讲JVM(21)——垃圾回收相关算法
  18. 气体润滑轴承matlab分析,轴承润滑常见的7种方式及其优缺点
  19. python tcl 外部_python为什么有tcl|python教程|python入门|python教程
  20. GEGBC 精华总结 | 虚拟道具交易、自治化游戏运行环境、内容驱动获客等

热门文章

  1. WordPress 5.2 Beta 3 发布,要求 PHP 5.6.20 以上版本
  2. [转]深入理解CSS中的层叠上下文和层叠顺序
  3. 【vue-router②】使用导航守卫控制页面前进刷新,后退缓存
  4. JavaScript将在企业环境中引发巨大变革
  5. 数据中心行业人士如何进行继续教育
  6. Introduction to random forests
  7. windows系统下Python环境的搭建及Selenium的安装
  8. Navicat for SQL Server(SQLServer数据库管理)
  9. Linux内核将支持HyperBus
  10. Windows 7 下如何调整网卡的优先级