asp.net-mvc – 获取视图名称,其中ViewResult.ViewName为单元测
发布时间:2020-12-16 03:41:35 所属栏目:asp.Net 来源:网络整理
导读:我在ActionResult上编写了一个扩展方法,用于单元测试,它将断言ViewName返回的是否是预期的.这是我到目前为止的代码: public static void AssertViewWasReturned(this ActionResult result,string viewName){ string actualViewName; if (result is ViewResu
我在ActionResult上编写了一个扩展方法,用于单元测试,它将断言ViewName返回的是否是预期的.这是我到目前为止的代码:
public static void AssertViewWasReturned(this ActionResult result,string viewName) { string actualViewName; if (result is ViewResult) actualViewName = (result as ViewResult).ViewName; else if (result is PartialViewResult) actualViewName = (result as PartialViewResult).ViewName; else throw new InvalidOperationException("Results of type " + result.GetType() + " don't have a ViewName"); Assert.AreEqual(viewName,actualViewName,string.Format("Expected a View named{0},got a View named {1}",viewName,actualViewName)); } 这工作正常,除非控制器返回视图而不指定名称 – 在这种情况下result.ViewName是一个空字符串. 所以,我的问题是 – 从ViewResult对象告诉ViewName是一个空字符串是什么? 解决方法
如果你的控制器方法没有通过MVC管道调用,则附加信息不会添加到Controller.ViewData字典中(我假设它会以某种方式提供“操作”-key,但无法确认).但是,由于您在路由框架等的上下文“外部”使用控制器,因此无法知道被调用的方法.
所以答案就是“不”.如果未指定视图的名称,则无法从操作返回的ViewResult中确定它.至少不是你的控制器的测试方式(顺便说一句,这完全没问题). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 在asp.net中验证
- asp.net-mvc-3 – 超时在ASP.Net MVC FormsAuthentication中
- asp.net-mvc – 关闭剃刀中的HTML编码
- asp.net-identity – AspNetCore – 使用Google身份验证时更
- asp.net-mvc – 用于MVC文件上传的Bootstrap进度条
- asp.net-mvc – 如何在Controller中使用依赖注入和存储库模
- asp.net – 用于Web应用程序的实体框架过度杀毒?
- modelstate – asp.net mvc没有实体框架
- .net – 使用DotNetOpenAuth的localhost上的OpenID提供程序
- ASP.NET全球化:Culture =“auto”页面指令,中性文化崩溃?
推荐文章
站长推荐
- asp.net – 应用程序池标识或模拟
- asp.net-mvc – 401未授权:访问被拒绝由于无效的
- asp.net-core – 如何配置ASP.Net TestHost以使用
- asp.net – 在代码隐藏中更改文本框BackColor
- asp.net-mvc – MVC路由错误:约束条目’长度’
- .net – 商业应用很糟糕,还有什么吗?
- asp.net-core – 无法运行使用yeoman生成器生成的
- asp.net-mvc – 部分视图和ModelState.AddModelE
- asp.net – 如何将Textboxes值传递给我的Ajax.Ac
- asp.net-core – ClaimTypes的ASP.NET要求
热点阅读