一、如何用创建交互式、快速动态网页应用的网页开发技术调用JsonResult方法
比如操控制器中添加有个返回JsonResult类型的方法FuckJson():
复制代码代码如下: span class=' KWD ' public span class=' pln ' span class=' typ ' jsonresultspan class=' pln ' span class=' typ ' fackjsonspan class=' pun '()span class=' pln ' span class=' pun ' { span class=' pln ' span class=' KWD ' return span class=' pln ' span class=' KWD ' newsan class=' pln ' span class=' typ ' jsonresultspan class=' pun '()span class=' span class=' typ ' allow get span class=' pln ' span class=' pun ' }; 跨度/跨度/跨度/跨度/跨度/跨度/跨度/跨度/跨度/跨度/跨度/跨度/跨度/跨度/跨度/跨度/跨度/跨度/跨度/跨度/跨度/跨度/跨度/跨度/跨度/跨度/跨度
如果我们直接在浏览器里调用,是可以看到结果的:
因为在浏览器地址栏直接输入这个地址,是一次得到请求,这就是为毛上面的代码里要写JsonRequestBehavior .允许获取。
用JQuery AJAX调用的代码如下:
复制代码代码如下: span class=' pln ' $ span class=' pun ' .span class=' pln ' Ajax span class=' pun '({ span class=' pln ' URL span class=' pun ' : span class=' pln ' span class=' str ')/Hock/Fackjson ' span class=' pun ',span class=' pln ' dataspan class=' pun ' : span class=' pln ' span class=' str ' ' ' span class=' pun ',span class=' pln ' dataTypespan class=' pun ' : span class=' pln ' span ' charset=utf-8 ' span class=' pun ',span class=' pln ' data filter span class=' pun ' : span class=' pln ' span class=' KWD ' functionspan class=' pln ' span class=' pun '(span class=' pln ' data span class=' pun ')span class=' pln ' span class=' pln ' span ' class=' KWD ' return span class=' pln ' span class=' pln ' span class=' pun ' },span class=' pln ' success span class=' pun ' : span class=' pln ' span class=' KWD ' function span class=' pln ' span class=' pun '(span class=' pln ' dataspan class=' pun ')span class=' pln ' span class=' pun ' alert span class=' pun '(span class=' pln ' dataspan class=' pun ');span class=' pln ' span class=' pun ' } span class=' pln ' span class=' pun ' })/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span
URL : '/他妈的/他妈的Json '很显然是行动的位置数据: ' '表示FuckJson()放方没有参数数据类型:“JSON”是理所当然的,我们返回的就是JsonResult。
二、返回自定义错误消息
默认情况下,如果创建交互式、快速动态网页应用的网页开发技术请求发生了错误。它最多只知道错误码,而无法显示具体的错误信息。但报错通常是需要的,所以我们先要写一个过滤器,作用是一旦发生例外,就给返回的json中的数据属性加一个错误消息。并且,响应的状态不能是200,不然创建交互式、快速动态网页应用的网页开发技术请求会以为没有发生错误。一般的服务器端错误代码是500。这个过滤器函数如下:
复制代码代码如下: span class=' KWD ' public span class=' pln ' span class=' KWD ' pln ' span class=' typ ' jsonexceptionfilterattributespan class=' pln ' span class=' pun ' : span class=' pln ' span class=' typ ' filterattributespan class=' pun ',span class=' pln ' span class=' typ ' iexceptionfilterspan class=' pln ' span ' class=' pun ' span ' ' span ' class=' typ ' requestspan class=' typ ' httpcontextspan class=' pun ' .span class=' typ '请求span class=' pun ' .span class=' typ ' isajaxrequestspan class=' pun '())span class=' pln ' span class=' pun ' { span class=' pln ' filterContextspan class=' pun ' .span class=' typ ' httpcontextspan class=' pun ' .span class=' typ ' response span class=' pun ' .span class=' typ ' statuscodespan class=' pln ' span class=' pun '=span class=' pln ' span class=' lit ' 500 span class=' pun ';span class=' pln ' filterContextspan class=' pun ' .span class=' typ ' exception onhandledspan class=' pln ' span class=' pun '=span class=' pln ' span class=' KWD ' true span class=' pun ';span class=' pln ' filterContextspan class=' pun ' .span class=' typ ' resultspan class=' pln ' span class=' pun '=span class=' pln ' span class=' KWD ' news an class=' pln ' span class=' typ ' jsonresultspan class=' pln ' span class=' pun ' { span class=' pln ' span class=' pun ' span '=span class=' pln ' span ' span class=' KWD ' news an=' pln ' span ' span ' class=' pln ' span ' class=' pun ' span ' class=' typ ' exception span=' pun ' . span class=' typ ' message span class=' pln ' span class=' pun ' },span class=' pln ' span class=' typ ' jsonrequestbehavious span class=' pln ' span class=' pun '=span class=' pln ' span class=' typ ' jsonrequestbehavious span class=' pun ' .span class=' typ ' allow get span class=' pln ' span class=' pun ' };跨度/跨度/跨度/跨度/跨度/跨度/跨度/跨度/跨度/跨度/跨度/跨度/跨度/跨度/跨度/跨度/跨度/跨度/跨度
之后,我们要给FuckJson()方法加上这个"特征"(属性在C#中最好不要翻译为属性),然后故意抛个错做测试。修改后的方法如下:
复制代码代码如下: span class=' pun '[span class=' typ ' jsonexceptionfilterattributespan class=' pun ']span class=' pln ' span class=' KWD ' public span class=' pln ' span class=' typ ' jsonresultspan class=' pln ' span class=' pun '()span class=' pln ' span class=' pun ' pln ' span class=' KWD ' tryspan class=' pln ' span class=' pun ' span ');span class=' pln ' span class=' KWD ' return span class=' pln ' span class=' KWD ' newsan class=' pln ' span class=' typ ' jsonresultspan class=' pun '()span class=' pln ' span class=' pun ' { span class=' typ ' Dataspan class=' pln ' span class=' pun '=span class=' pln ' span class=' KWD ' newsan class=' pln ' span class=' typ ' span class=' typ ' allow get span class=' pln ' span class=' pun ' }; span class=' pln ' span class=' pun ' } span class=' pln ' span class=' KWD ' catch span class=' pln ' span class=' pun '(span class=' typ ' exceptionspan class=' pln ' ex span class=' pun ')span class=' pln ' span class=' pun ' { span class=' pln ' span ' span class=' KWD ' throwspan class=' pln ' ex span class=' pun ';span class='pln' span class='pun '
捕获异常后,你也可以先记一下日志、或是根据你自己的需要处理一下这个异常,然后再投掷。
最后我们的创建交互式、快速动态网页应用的网页开发技术请求代码也得做修改,增加一个错误的处理:
复制代码代码如下: span class=' pln ' $ span class=' pun ' .span class=' pln ' Ajax span class=' pun '({ span class=' pln ' URL span class=' pun ' : span class=' pln ' span class=' str ')/Hock/Fackjson ' span class=' pun ',span class=' pln ' dataspan class=' pun ' : span class=' pln ' span class=' str ' ' ' span class=' pun ',span class=' pln ' dataTypespan class=' pun ' : span class=' pln ' span ' charset=utf-8 ' span class=' pun ',span class=' pln ' data filter span class=' pun ' : span class=' pln ' span class=' KWD ' functionspan class=' pln ' span class=' pun '(span class=' pln ' data span class=' pun ')span class=' pln ' span class=' pln ' span ' class=' KWD ' return span class=' pln ' span class=' pln ' span class=' pun ' },span class=' pln ' success span class=' pun ' : span class=' pln ' span class=' KWD ' function span class=' pln ' span class=' pun '(span class=' pln ' dataspan class=' pun ')span class=' pln ' span class=' pun ' alert span class=' pun '(span class=' pln ' dataspan class=' pun ');span class=' pln ' span class=' pun ' },span class=' pln '错误span class=' pun ' : span class=' pln ' span class=' KWD ' function span class=' pln ' span class=' pun '(span class=' pln '乱搞对象span=' pun ')span=' pln ' span=' pln ' span=' KWD ' try span class=' pln ' span class=' pun ' { span class=' pln ' span class=' pln ' parsejsonspan class=' pun '(span class=' pln '乱搞对象span class=' pun '). span class=' pln ' responsetextspan class=' pun ');span=' pln ' alert span=' pun '(span=' pln ' JSON span=' pun ').span class=' pln '错误消息span class=' plnspan class=' pln ' span class=' pun ' } span class=' pln ' span class=' KWD ' catch span class=' pun '(span class=' pln ' espan class=' pun ')span class=' pln ' span class=' pun ' { pln ' alert span class=' pun '(span class=' str ')发生了不好的事span class=' pun ');span class=' pln ' span class=' pun ' } span class=' pln ' span class=' pun ' } span class=' pln ' span class=' pun ' })/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span/span
现在请求这个行动,会发现反应的状态已经是500了。并且返回了Json格式的错误信息。