asp.net-mvc – 在ASP.NET MVC中处理控件显示逻辑的推荐模式是什
我正在阅读一些MVC3教程,即Pluralsight视频,我正在考虑如果对ASP.NET MVC进行大修,我们现有的应用程序将如何运行(不是计划,但它给了我一个参考框架) ).在我们的aspx代码隐藏中,我们有相当多的代码看起来像这样:
if (SomeBooleanCheck){SomeControl.Visible = true;}else {SomeControl.Visible = false;} 假设该示例大大简化,但假设布尔逻辑相当复杂并且假设需要发生多个事情作为使控件可见(可能更改颜色,大小,文本等)的一部分,那么在ASP中执行此操作的模式是什么. NET MVC?看起来你必须在视图本身做同样的布尔检查,这对我来说似乎有些难看.似乎必须有一个更好的方法,这肯定出现在MS的用例列表中,我只是没有看到答案. 解决方法
您可能采取的方法将根据具体情况而有很大差异.一些选择包括:
>按照您的说法进行操作并在视图中添加条件 您没有明确提到如何在条件中呈现控件.我假设你会做一个RenderPartial.所以视图中的线条本身就很“小”. if(myViewModel.ComplexBoolean) // Boolean set in generation of view model Html.RenderPartial('firstPartial') else Html.RenderPartial('secondPartial') 编辑:如果您设置为“可见”的项目只是一个控件,您可以直接输出控件,例如 if(myViewModel.ComplexBoolean) { Html.DropDownListFor(m => m.Type,Model.Types /* An IEnumerable<SelectListItem>*/,new { @class = "myList" }); } 另外,如果您不想设置’Model.Types’属性(例如保存数据库命中),则条件可能位于您创建视图模型的位置(控制器或某些服务/视图模型存储库) .然后,视图可以检查存在的属性: if(Model.Types != null) { Html.DropDownListFor(m => m.Type,new { @class = "myList" }); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 更新用户声明不起作用.为什么?
- .net – 抱歉,处理您的请求时出错
- asp.net-mvc-4 – 根本无法使SignalR(asp.net mvc4)和requi
- asp.net core视图中使用Json序列化模型
- 如何在ASP.NET应用程序中唯一标识客户端计算机?
- asp.net-web-api – WebApi 2.1 PUT抛出错误415
- 无限分级和tree结构数据增删改【提供Demo下载】
- .net-4.0 – 为什么我在一个新的MVC4项目中收到编译错误?
- asp.net – 代码后面的根运算符(“?”)地址的相对路径
- asp.net-mvc-3 – 如何在输出缓存中使用动态持续时间值?
- ASP.NET Webforms,用户控件中的JavaScript
- Asp.net Web API:控制器上未找到任何操作
- 在ASP.Net MVC和IIS 7.5中设置最佳http缓存头和服
- asp.net – 使用.Resx文件获取全局应用程序消息?
- asp.net – 可以在Web.config中配置一个位置,只允
- ef-code-first – 如何首先使用代码向Identity默
- asp.net-mvc-3 – MVC3:用于发送表单(模型)值和
- asp.net-mvc – 在AppHarbor上获取文件内容
- C#使用Jquery zTree实现树状结构显示_异步数据加
- asp.net-mvc – Angularjs中每个视图应该有一个控