ZFYCH_Love

Simply but Powerful

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  115 随笔 :: 1 文章 :: 36 评论 :: 18万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

今年一直在做一个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,就不能很好的正确转化。

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

posted on   xiaoyang_  阅读(1148)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示