我必须编写两个独立的部分,这些部分自动按照意图进行工作。
因此,当控制器操作过程成功时,它应该返回部分视图,并且当事情不正确时,它会抛出一些错误,因为客户端上的某些事情会区分成功以及失败,而不是总是处理成功。
有两个主要部分用于实现这一点:
>一个自定义异常类,当出现错误时抛出异常,所以我们可以区分出现任何时候出现的任何原因和与处理有关的错误的异常(最引人注目的是无效的模型状态)
>异常行为过滤器捕获我们的自定义异常并根据该异常准备结果;从代码中可以看出,我们的自定义异常将保存有关模型状态错误的信息,因此此过滤器将能够返回自定义HTTP状态代码以及一些文本信息
关于细节,那么…
External link: All this information (detailed explanation as well as all the code) is also available on my blog. Latest code updates will always be 07000.
自定义异常类
这个班提供两件事
>使模型状态错误与常规异常区分开来很简单
>提供一些我以后可以使用的基本功能
此类以后在我的自定义错误过滤器中使用。
public class ModelStateException : Exception
public Dictionary Errors { get; private set; }
public ModelStateDictionary ModelState { get; private set; }
public override string Message
if (this.Errors.Count > 0)
return this.Errors.First().Value;
return null;
private ModelStateException()
this.Errors = new Dictionary();
public ModelStateException(ModelStateDictionary modelState) : this()
this.ModelState = modelState;
if (!modelState.IsValid)
foreach (KeyValuePair state in modelState)
if (state.Value.Errors.Count > 0)
this.Errors.Add(state.Key,state.Value.Errors[0].ErrorMessage);
当有任何模型状态错误时,此属性有助于在HTTP错误代码方面向客户端返回错误。
[AttributeUsage(AttributeTargets.Method,AllowMultiple = false,Inherited = false)]
public class HandleModelStateExceptionAttribute : FilterAttribute,IExceptionFilter
public void OnException(ExceptionContext filterContext)
if (filterContext == null)
throw new ArgumentNullException("filterContext");
if (filterContext.Exception != null && typeof(ModelStateException).IsInstanceOfType(filterContext.Exception) && !filterContext.ExceptionHandled)
filterContext.ExceptionHandled = true;
filterContext.HttpContext.Response.Clear();
filterContext.HttpContext.Response.ContentEncoding = Encoding.UTF8;
filterContext.HttpContext.Response.HeaderEncoding = Encoding.UTF8;
filterContext.HttpContext.Response.TrySkipIisCustomErrors = true;
filterContext.HttpContext.Response.StatusCode = 400;
filterContext.HttpContext.Response.StatusDescription = (filterContext.Exception as ModelStateException).Message;
之后,我简单地用我的属性来装饰我的控制器动作。我在客户端上收到错误代码400,并在我的过滤器中设置了正确的信息。然后将该信息显示给用户(当它与模型状态错误相关时,它显示用户应该修改以使表单有效的字段的信息)。
[HandleModelStateException]
public ActionResult AddComment(MyModel data)
// check if state is valid
if (!this.ModelState.IsValid)
throw new ModelStateException(this.ModelState);
// get data from store
return PartialView("Comment",/* store data */ );
这使得我的代码可以重复使用任何模型状态错误,那些将被发送到客户端,因为他们应该。
一个问题(现已解决)
但是这个代码还是有一个问题。当我的错误动作过滤器设置StatusDescription并且该字符串包含一些特殊字符,如Č,我得到客户端垃圾。除非我使用IE(我正在使用版本8)。 FF和CH显示垃圾。这就是为什么我设置编码,但它不工作。如果有人有这个特殊性的解决方法,我会很乐意听。如果我在内容本身返回错误信息,一切都很好。编码是正确的,我可以显示任何我想要的。
代码下载:http://files.cnblogs.com/conexpress/ConExpress_MyCalculator.rar 前面几篇文章介绍了各种分析过程,本篇作为完结篇,介绍如何
调用
之前实现的代码,如何实现多行表达式或者选择部分表达式进行运算,以及如何定位
错误
。
本程序可以不需要UI界面,独立成一个模块。如果表达式分析与计算功能打包成一个dll,那入口只有一个,SyntaxAna...
使用
AJAX
实现楼
层
加载的例子已经非常多,但是html代码大都是手动拼接的,编写不便,而且难以维护。
下面就使用
AJAX
+
Partial
View
来实现
1.html代码
<!--楼
层
1开始-->
<div class="floor" id="floor1">
</div>
<!--楼
层
1结束-->
<!--楼
层
2
Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc5-ef6-bs3-get-started-
partial
view
.html
系列教程:MVC5 + EF6 + Bootstrap3
上一节:MVC5 + EF6 + Bootstrap3 (13) 查看详情、编辑数据、删除数据
下一节:MVC5 + EF6 + Bootstrap3 (15)...
var useData = [];
$.
ajax
({ url: "/dealer/dealerShoper/synShopers", method: "post", data: JSON.stringify(useData), contentType: 'application/json', dataType: "j...
需求:页面上有dropdown之类的控件,当选择里面不同值的时候,下面关联的内容跟着改变。
思路:把与 dropdown关联的会改变的内容放到
Partial
View
(ascx)里,用
JQuery
绑定dropdown的change事件,当选择值改变时,用
JQuery
ajax
请求与
Partial
View
相关的Action,得到数据后讲取到的内容覆盖原来的内容。
Model 类:
代码...
分页成功后,下面是
ajax
的页面
操作
。众所周知,webform
中
,对数据做了编辑或者删除
操作
后,只需
调用
相应控件的DataBind()方法,就可以在页面更新数据。只要将控件和触发器放在updatepanel里,便可以实现无页面刷新的
ajax
数据刷新,可谓easy到妈妈再也不用担心。可是到了mvc,似乎一切又回到了最原始的
状态
,需要手动的提交,通过接口获取刷新后的数据,然后通过js刷新部分页面……
我想了解
Jquery
Ajax
方法是如何工作的。现在,我有一些问题
调用
控制器
中
的ActionResult方法,它将
返回
一个
Partial
View
。使用
Jquery
ajax
调用
Controller
中
的ActionResult方法并
返回
数据已经创建了一个按钮,我将使用从服务器获得新的数据(
Ajax
调用
应该运行)代码:(在Home
控制器
的ActionResult)public ActionResult...
问题链接: MVC如何实现异步
调用
输出HTML页面该问题是个常见的 case, 故写篇文章用于提示新人。在asp.net mvc
中
返回
View
时使用的是
View
Result,它继承自
View
ResultBase 同时它还有个兄弟
Partial
View
Result相信聪明的你已经知道了它俩的区别了,没错 一个用于
返回
整体,另一个
返回
局部(部分)。假设我有这样一个需求,输入用户名,然后
返回
相关
信息
。之前的做法可能会是用json格式来
返回
用户的相关
信息
,然后到页面去渲染相关的HTML,如果生产的相关HTML比较大
我一直在从
jquery
收到针对
Ajax
请求的“ parsererror”,我尝试将POST更改为GET,以几种不同的方式(创建类等)
返回
数据,但我似乎无法弄清楚问题出在哪里。我的项目在MVC3
中
,我使用的是
jQuery
1.5,我有一个Dropdown,并且在onchange事件上,我触发了一个
调用
,以根据所选内容获取一些数据。下拉列表:(这会从
View
bag的列表
中
加载“
View
s”,并触发事...
分页成功后,下面是
ajax
的页面
操作
。众所周知,webform
中
,对数据做了编辑或者删除
操作
后,只需
调用
相应控件的DataBind()方法,就可以在页面更新数据。只要将控件和触发器放在updatepanel里,便可以实现无页面刷新的
ajax
数据刷新,可谓easy到妈妈再也不用担心。可是到了mvc,似乎一切又回到了最原始的
状态
,需要手动的提交,通过接口获取刷新后的数据,然后通过js刷新部分页面…… ...