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

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. BZOJ2303 [Apio2011]方格染色 并查集

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ2303 题意概括 现在有一个N*M矩阵,矩阵上只能填数字0或1 现在矩阵里已经有一些格子被填写了数字 ...

  2. 最短路(Bellman)-Hdu1874畅通工程序

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1874 题目: 某省自从实行了很多年的畅通工程计划后,终于修建了很多路.不过路多了也不好,每次要从一个城 ...

  3. 在Visual Studio代码中使用Flask

    Flask是一个用于Web应用程序的轻量级Python框架,它提供了URL路由和页面呈现的基础知识. Flask被称为“微”框架,因为它不直接提供表单验证,数据库抽象,身份验证等功能.这些功能由称为F ...

  4. 【*】Redis实战场景中相关问题

    一.Redis简介 redis主要解决的问题 分布式缓存是分布式系统中的重要组件,主要解决高并发.大数据场景下,热点数据访问的性能问题,提供高性能的数据快速访问. 使用缓存常见场景 项目中部分数据访问 ...

  5. SQL server学习(四)T-SQL编程之事务、索引和视图

    今天来分享下T-SQL高级编程中的事务.索引.视图,可以和之前的SQL server系列文章结合起来. 一.事务 事务(TRANSACTION)是作为单个逻辑工作单元执行的一系列操作,这些操作作为一个 ...

  6. grant 权限 on 数据库对象 to 用户

    grant 权限 on 数据库对象 to 用户 一.grant 普通数据用户,查询.插入.更新.删除 数据库中所有表数据的权利. grant select on testdb.* to common_ ...

  7. vue+ElementUI使用笔记

    1,使用表单验证: //定义验证规则 window.varifyUtil = { //验证数字 validateNumber: function(rule, value, callback){ if ...

  8. BZOJ.3575.[HNOI2014]道路堵塞(最短路 动态SPFA)

    题目链接 \(Description\) 给你一张有向图及一条\(1\)到\(n\)的最短路.对这条最短路上的每条边,求删掉这条边后\(1\)到\(n\)的最短路是多少. \(Solution\) 枚 ...

  9. wtforms源码流程

    未实例化前 1.继承的Form类 # Form(FormMeta("NewBase", (BaseForm,), {}))# Form(NewBase(BaseForm)) cla ...

  10. 写日志(log)

    已下为我自己写的一个写日志的类,比较简洁. <?php class Log { /** * @Purpose : 写日志 * @Method Name : writeLog() * @param ...