asp.net-mvc – RedirectToAction()与View()和三元运算符?
在决定从Controller Action返回哪个ActionResult时,我决定使用三元运算符而不是更长的if-else.这是我的问题……
这段代码有效 return ModelState.IsValid ? (ActionResult) RedirectToAction("Edit",new { id = id }) : View(new EditViewModel(updatedCategory)); 但事实并非如此 return ModelState.IsValid ? RedirectToAction("Edit",new { id = id }) : View(new EditViewModel(updatedCategory)); 如果使用if-else,我不必进行显式转换.另外,RedirectToAction()和View()都返回一个ActionResult衍生物. 我喜欢这段代码的简洁性,但是这个代码似乎并不合适.任何人都可以开导我吗? 虽然我确定这很明显,但EditViewModel是我的Edit动作的视图模型,updatedCategory是EF4对象.但我不认为这与这个问题有关. 好的…我刚刚意识到我在做什么是不必要的,因为无论我是回到使用updatedCategory的Edit操作,所以我不需要确保模型有效.如果有人能提供帮助,我仍然很想知道这个问题的答案. 解决方法
我相信这是因为使用?:运算符时的参数必须可以在它们之间进行转换,例如:在条件? x:y您需要能够将x转换为y或y转换为x.然后结果的类型是两者中最不具体的.因此,如果x是一个对象而y是一个字符串,那么你可以将一个字符串转换为一个对象,结果将是object类型.
在您的示例中,x是RedirectToRouteResult,y是ViewResult.您无法将RedirectToRouteResult转换为ViewResult,反之亦然.你可以将它们都转换为ActionResult,这就是为什么如果你转换为ActionResult它工作 – 然后x的类型是ActionResult,y可以转换为ActionResult,整体结果是ActionResult类型. 希望我已经在那里正确地解释了……害怕我不知道?:运算符的确切语义,因为我自己很少使用它… (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 一键式ASP.NET Web部署包括先决条件?
- asp.net-mvc-3 – 无法加载文件或程序集’Microsoft.Practi
- 如何不缓存ASP.NET用户控件?
- asp.net – 在代码后面和SqlDataSource中编写查询
- asp.net-mvc – asp.net mvc 4应用程序的入口点是什么?
- asp.net-mvc – 弹出编辑模式下的多个列
- asp.net-mvc-3 – 使用ViewModel时不显示MVC3自定义验证错误
- 如何打开一个页面在新的选项卡按钮点击asp.net?
- asp.net图表控件值标签位置
- asp.net-mvc-3 – ASP.NET MVC 3/4是否有任何响应模板
- 如何使用ASP.NET MVC中的正确密钥向ModelState添
- asp.net-mvc – 在使用Asp.Net MVC ActionLink,R
- asp.net-mvc-2 – 使用web.config文件在ASP.NET
- asp.net-mvc-4 – 如何在Durandal中使用cshtml文
- asp.net-mvc – 如何删除MVC网站中的所有当前域名
- ASP.NET:如何检测身份验证超时
- asp.net – 如何使用.net用户控件创建Umbraco内容
- asp.net-mvc – 如何在MVC中创建通用视图模型?
- asp.net-mvc-4 – 页脚的Kendo Grid Aggregation
- asp.net-mvc – 在实时服务器上使用oauth登录失败