asp.net-mvc – 在ASP.net MVC单元测试中访问ModelState错误字典
发布时间:2020-12-16 07:31:44 所属栏目:asp.Net 来源:网络整理
导读:我在动作结果中添加了一个键值对,如下所示: [HttpPost,Authorize] public ActionResult ListFacilities(int countryid){... ModelState.AddModelError("Error","No facilities reported in this country!");...} 我在单元测试中有一些像这样繁琐的代码: pu
我在动作结果中添加了一个键值对,如下所示:
[HttpPost,Authorize] public ActionResult ListFacilities(int countryid) { ... ModelState.AddModelError("Error","No facilities reported in this country!"); ... } 我在单元测试中有一些像这样繁琐的代码: public void ShowFailforFacilities() { //bogus data var facilities = controller.ListFacilities(1) as PartialViewResult; Assert.AreSame("No facilities reported in this country!",facilities.ViewData.ModelState["Error"].Errors.FirstOrDefault().ErrorMessage); } 当然,只要我有一个错误,它就可以工作. 我是否有更简单的方法从该字典中获取值? 解决方法
不需要FirstOrDefault,因为访问ErrorMessage时会出现NullReferenceException.你可以使用First().
无论哪种方式,我都找不到任何内置的解决方案.我所做的是创建一个扩展方法: public static class ExtMethod { public static string GetErrorMessageForKey(this ModelStateDictionary dictionary,string key) { return dictionary[key].Errors.First().ErrorMessage; } } 其工作方式如下: ModelState.GetErrorMessageForKey("error"); 如果您需要更好的异常处理或支持多个错误,它很容易扩展… 如果您希望缩短它,可以为ViewData创建一个扩展方法… public static class ExtMethod { public static string GetModelStateError(this ViewDataDictionary viewData,string key) { return viewData.ModelState[key].Errors.First().ErrorMessage; } } 和用法: ViewData.GetModelStateError("error"); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- entity-framework – 无法从程序集’EntityFramework加载’
- asp.net – 如何在MVC3中使用https生成绝对URL?
- 部署ASP.Net MVC应用程序的最便宜的方法是什么?
- asp.net – 无法将参数值从字符串转换为guid
- asp.net-mvc – 如何在Razor帮助器中使用UrlHelper?
- 统一流控服务开源:基于.Net Core的流控服务 统
- asp.net – 混合Windows / Forms身份验证跨站点
- asp.net-mvc – 向RouteValueDictionary添加复杂类型的数组
- asp.net-mvc-3 – 如何从ModelMetadata检索GroupName数据注
- asp.net-mvc – 在MVC2中使用区域
推荐文章
站长推荐
热点阅读