案例一:比如我要传递一个新闻标题和新闻内容 存储到数据库去

1.最简单的通用Url公式就是

function getUrl() {
var d = $("#表单ID").serialize();
return "/控制器名称/Action名称?" + d;
}

1.1 假如不用jQuery的serialize()方法,有些情况需要手动拼接URL,传到后台去,这里会遇到第一个问题,假如新闻内容可以1000字以内,新闻内容为500-1000字之间比较多的时候,

可能你拼接的时候会遇到第一道坎

或者页面会弹出一个alert,提示这类错误,你只需要在站点的根目录的web.config添加如下配置,这里最大是2097151,不要还想要大的了

<system.web>
<httpRuntime maxQueryStringLength="" />
</system.web>

1.2  假如我们不采用第三方富文本框插件,而是使用textarea。如果新闻里面含有html,英文的双引号,提交时候就会报一类错误。因为你提交的内容含有MVC默认因为安全机制而认为的不符合要求的字符串,这是防止别人注入脚本攻击网站,MVC默认自带的。

第一种解决办法,也是不考虑安全问题的临时解决办法

在请求的Action上加上  ValidateInput(false),如果你在Controller上加,那就是影响整个Controller中所有的Model,当然你可以在Web.config配置,影响整个web,但是不建议那样做

例如

或者单独在Model中的属性上加上一个特性 AllowHtml

这两个小方法你可以试试

1.3  就像你假如是这样子拼接过去的

$.ajax中的url参数,你是

"/XX/XX?Content="+$("#Content").val()+ ...

这样子,你别得意的太早,第三道坎就是     IE8下传输到后台中文会乱码,IE6,7没有测试,谷歌,火狐没事

解决办法:

使用  escape() 方法可以解决

"/XX/XX?Content="+escape($("#Content").val())+ ...

特别备注:我不太建议URL中这样带参数,因为URL过长会有一些意想不到的错误

强烈建议大参数(长的),例如我用$.ajax方法,把值获得后放入data参数中,大家都知道Post都是把请求的参数放入header中,Get方式都是放入URL中,我们使用post,传入的后台的值是没有大小限制的,这里也不需要使用escape()了

例如,这里的Content参数,就是textarea中的值,字数很多,这样子,我们不用担心字数过长而出现的各种错误

1.4 第四道坎,如何显示定义的HTML,MVC提供了几个方法我不清楚,目前我也只是用了两个

假设cshtml页面顶部我们声明了一个News新闻的Model,这个Model中有两个属性,一个是标题,第二个是内容

则页面中我们可以这样使用

普通的显示

或者直接

但是假设含有\r\n这种换行的,我觉得可以使用试试

@Html.Raw(@Model.Content)

如果太复杂的html可以试试

关于拼接HTML,还有很多技巧,感觉就像C#代码和HTML标签灵活组合,可以省去很多冗余的代码,还有C#代码和Javascript的赋值技巧,C#的值可以赋值给Javascript变量和方法等,这里闲聊传参而已

给你们展示一下我的C#和HTML拼接技巧

场景: 现在有个编辑页面,传入学生ID,打开学生信息,有个性别的radio,默认显示页面要选中性别,Model中是哪个就选中哪个,入门的童鞋都会用if else,我的办法如下(C#结合HTML)

入门级赋值如下(这里只是展示了,不要生气我贴图,应该能看的懂的,模仿的会的呀)

给你们展示一下我的C#和Javascript赋值技巧

第一种: 我们在return view之前放了一个集合和一个Id到ViewBag中,对应的View就可以在页面上获得

案例分析: 在这里,我存储了bid就是所谓的某张表的主键,后台在显示return view之前我存放了几个我前台页面会用到的值到ViewBag中,在页面使用时,我把值取了出来,第二个是个集合,cnt就是这个集合的大小,这里不是不太好理解的。这里我同时也掩饰了 string,int,集合的从ViewBag中拿值得方法

第一个铁律: @(C#变量名称)  无攻不破,你可以任意的结合HTML

第二个铁律:

①结合JS

   

②结合jQuery

③JS其他场景

作为JS方法中的参数,这里Expand是个普通的js方法

作为在HTML标签中的JS传参

至于@(C#代码)  的使用还有一些,就看你敢不敢尝试摸索了。这里注意重点理解原理,C#代码,我加粗描红的字

当然我们可以举一反三:

②说明一下,这里的var是js中的var,不是C#的

③传参的时候,我们经常需要隐藏字段作为辅助,下面简单列举几个小写法,注意这里的Hidden默认的第一个参数,都是 html  DOM元素中的name属性,jQuery序列化的时候也是根据name属性来的

这里的Model,熟悉MVC的一看就知道,整个页面的全局Model属性,当然这里也可以是一个 拓展方法,关于HTML结合拓展方法优化页面的显示,这里有兴趣的童鞋可以去研究下

这里举个我用到的场景,比如 说说和评论数,这里的评论数,我们就可以通过拓展方法得到,页面上直接  拓展方法A(该说说的ID),拓展方法返回一个string即可,是int还可以特殊处理下,比如是0,显示无评论

===================================本文来自博客园 茗洋AaronYang     博客地址:aaronyang.cnbolgs.com==========================

关于MVC中的@ 一些用法,其实还可以结合@:  这个MVC大餐结合JS输出

我们大脑的印象中都是 利用@:可以在@的作用域内 输出一些文本,效果也等同于<text></text>

具体的初级用法请参考,这篇文章:   立即查看

今天我顺便讲一下 @: 在js中的另一个技巧,不琢磨难吃透   

这里我可以我这样个人理解,@标记着这里以后的代码是C#代码,而@:则是标记着C#以外的代码(当然包括js,估计js不能换行写,当然你可以采取多个@: 有兴趣的童鞋可以试试,我看@和@:的普通用法是讲@:是输出文本的,没想到自己琢磨能不能调用js,竟然可以了)

左边是我简单的列举的一个大致简单小样子

其他备注: C#将值给JS的时候,例如赋的值是int型的时候,可以不加双引号或者单引号,是string的必须加单引号

最后一次强调,要使MVC页面代码 精彩出色,这里的@(C#代码),是C#代码,例如我想要显示客户端请求的浏览器的信息,我们直接像后台那样做就行了

最后5分钟,啰嗦最后一句话,基本URL的小技巧,我的写法不是直接 /XX/XX

第一种:

$('#表单ID').attr('action') +"?"+其他参数

第二种(就是结合JS结合C#代码):

还有一种传参技巧,就是结合过滤器Filters,这里时间不早了,不说了

关于前台POST后面的讲解技巧也有很多,特别在做Insert操作时候,单表还容易,但是多表的插入,我这里还是有一些很炫的技巧,有机会再说吧

 如果你喜欢,欢迎投上你宝贵的一个推荐,谢谢你

本文来自博客园 茗洋AaronYang     博客地址:aaronyang.cnbolgs.com

[AaronYang原创] 大话ASP.NET MVC3+ (C#与DOM与JS页面上的很炫的技巧)的更多相关文章

  1. ASP.NET Web API 帮助(help)页面上没有 Test API按钮的解决方法

    参与一个web API项目时发现它的help页面特别好用,不仅可以根据webapi的方法和注释自动生成帮助文档以方便查阅,还可以在这个页面上测试webapi方法.于是在自己新建项目时也打算将这个hel ...

  2. ASP.NET MVC3开发-数据库篇之CodeFisrt开发(一)

    本文讲述了在ASP.NET MVC3开发中M层使用Code Fisrt如何进行开发,由于作者对ASP.NET MVC3的学习不是很深,所以写的都是些基本的内容(写的如有不正确的地方请评论指正),适合初 ...

  3. Log4Net异常日志记录在asp.net mvc3.0的应用

    前言 log4net是.Net下一个非常优秀的开源日志记录组件.log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的媒介.本文主要是简单的介绍如何在Visual ...

  4. Linux(CentOS 6.7)下配置Mono和Jexus并且部署ASP.NET MVC3、4、5和WebApi(跨平台)

    1.开篇说明 a. 首先我在写这篇博客之前,已经在自己本地配置了mono和jexus并且成功部署了asp.net mvc项目,我也是依赖于在网上查找的各种资料来配置环境并且部署项目的,而其在网上也已有 ...

  5. ASP.NET MVC3 Razor 调试与预加载

    目录(?)[-] 获取服务器信息 FormsAuthenticationSlidingExpiration 属性 MVC3预加载   在ASP.NET MVC3开发中,调试中怎么也是不可缺少的,那对于 ...

  6. 在没有安装有mvc3的主机上部署asp.net mvc3网站,需要包含的DLL文件

    原文:在没有安装有mvc3的主机上部署asp.net mvc3网站,需要包含的DLL文件 http://hi.baidu.com/aspxdiyer/blog/item/5515a69943232f1 ...

  7. ASP.NET MVC3的学习

    ASP.NET MVC第一次课(2013-12-25晚学完)     1.ASP.NET MVC 的特点       分离任务          可扩展        强大的URL重写(路由)机制   ...

  8. ASP.NET MVC3 Model验证总结

    ASP.NET MVC3中的Model是自验证的,这是通过.NET4的System.ComponentModel.DataAnnotations命名空间完成的. 我们要做的只是给Model类的各属性加 ...

  9. CKEditor Html Helpers for ASP.NET MVC3 Razor/WebForms Views

    一.原生方法: 在 razor 中 使用Fckeditor 编辑内容,需要引入js <script src="@Url.Content("~/fckeditor/fckedi ...

随机推荐

  1. Ubuntu 18.04安装Codeblocks

    安装步骤: 一:首先安装简版CodeBlocks sudo apt install codeblocks 二:把编译环境,C库.C++库和Boost库装好 sudo apt install build ...

  2. 计蒜客-跳跃游戏二 (简单dp)

    题目链接:https://nanti.jisuanke.com/t/20                                         跳跃游戏二 给定一个非负整数数组,假定你的初始 ...

  3. 002.HAProxy安装及常见配置

    一 HAProxy安装 官方链接:http://www.haproxy.org/ (国内可能无法打开) 下载连接:http://pkgs.fedoraproject.org/repo/pkgs/hap ...

  4. Chameleon

    # -*- coding: utf-8 -*- """ Created on Tue Dec 18 09:55:16 2018 @author: Mark,LI &quo ...

  5. 认证登录装饰器与form组件的使用

    def auth(func): '''制作登录认证的装饰器''' def inner(request,*args,**kwargs): user_info=request.session.get(se ...

  6. 230. 二叉搜索树中第K小的元素

    230. 二叉搜索树中第K小的元素 题意 给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素. 你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数. ...

  7. js实现文字超出部分用省略号代替实例代码

    关于超出一定字数用省略号显示的问题,这种要求在我们日常开发的时候经常见到,我们之前基本都是用CSS来完成的,今天给大家分享个Javascript实现这个功能的示例代码,有需要的可以参考借鉴. 话不多说 ...

  8. UIProgressView进度条

    //非原创 UIProgressView顾名思义用来显示进度的,如音乐,视频的播放进度,和文件的上传下载进度等. 下面以一个简单的实例来介绍UIprogressView的使用. @interface  ...

  9. PAT-A1135. Is It A Red-Black Tree (30)

    已知先序序列,判断对应的二叉排序树是否为红黑树.序列中负数表示红色结点,正数表示黑色结点.该序列负数取绝对值后再排序得到的是中序序列.根据红黑树的性质判断它是否符合红黑树的要求.考察了根据先序序列和中 ...

  10. angular2项目关于动画的处理

    animations动画在angular2官网里面已经讲解很详细了,那么动画功能在实际项目中应该如何组织文件,动画文件放在哪个位置,如何来组织结构使得动画模块和其他模块之间运作调理清晰呢,下面参照Ni ...