mvc视图中的条件逻辑 vs htmlhelper vs action

2023-12-19

我有一个大视图,需要一些条件逻辑来决定在视图中间渲染几个 html 块中的哪一个。我的模型有一个属性,它可以有几个不同的值,决定要输出的 html。

我通常会将条件逻辑放入 html 帮助程序中,但考虑到每个输出都是相当大的 html 块,我不确定在 C# 文件中转义这些是否会很好。我还可以将逻辑放入操作中并呈现不同的视图,但考虑到大多数视图是相同的,这看起来也不太好。因此,在我看来(或部分?),我留下了多个 if 语句,这也看起来很丑陋(并且显然是不可测试的)。

这样做的最佳方法是什么?

(我正在使用 MVC3,以防有一些新的、时髦的东西我可以使用!)


我通常将单独的视觉块放在它们自己的部分中。然后我的视图有条件地使用 Html.Partial 调用每个部分。这可以防止主视图膨胀。

一般来说,我会尽量避免包含多个元素的 Html.Helpers。

就像是:

@if(Model.HasA) 
{
    @Html.Partial("widgetdetails-hasa")
}

@if(Model.HasB)
{ 
    @Html.Partial("widgetdetails-hasb")
}
// etc
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mvc视图中的条件逻辑 vs htmlhelper vs action 的相关文章

  • Razor 与 ASPX 语法的比较 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 最近 我开始研究 MVC3 和 Razor 并阅读了几篇有关这些主题的文章 以更好地理解这个概念 我一直在读Scott Guthrie 的博客文
  • 在 MVC 2 编辑器模板中正确注册 JavaScript 和 CSS

    如何在 ASP NET MVC 2 RTM 编辑器模板中正确注册 javascript 块 我所处的具体场景是我想使用Dynach JSCal2 日期时间选择器 http www dynarch com projects calendar
  • 未找到键为“”的资源对象。自动部署的 ASP.NET MVC3 应用程序

    我有一个使用 LocalResources 本地化的 ASP NET MVC 3 应用程序 一切 一如既往 在我的机器上运行 但是当应用程序部署 通过 tfs 自动部署 到我的测试环境时 我收到以下错误 未找到键为 的资源对象 我的资源文件
  • 在 MVC 3 中,我无法让 @Html.DisplayFor 呈现格式化字符串

    我希望这是一个非常简单的问题 尽管经过大量谷歌搜索后 我还没有能够解决这个问题 我正在使用 MVC 3 开发一个购物车网站 并使用代码优先的实体框架 我发送的模型是 Product 对象的列表 每个对象都包含此属性 Required Err
  • 将 MVC2 升级到 MVC3 - 仅在服务器上出现问题 [已关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我已使用此
  • NServiceBus 3.2 示例问题

    我正在尝试运行 AsyncPages 的 NServiceBus 示例 看起来很简单 从 NServiceBus com 下载最新版本 执行bat文件来安装先决条件 打开解决方案 Press F5 在文本框中输入数字 当我这样做时 我遇到了
  • 如何在 MVC Core 中动态选择控制器

    我遇到的情况是 站点可能需要链接来根据数据库结果重定向到某些控制器 例如 site com abcd 需要从项目控制器返回结果 通常称为 item view 123 这里的关键是我不能将 abcd 硬编码到路由中 有些链接可能会转到项目控制
  • 渲染以 Markdown 形式上传并在服务器端转换为 Html 的 Html 是否安全?

    我有一个网络表单 允许用户以 Markdown 形式上传文本 Markdown 在服务器上转换为 Html 使用 Markdig 并存储 当显示用户上传的转换后的 Html 时 我应该 Html Encode 内容 该项目采用 c MVC
  • 通过 C# 更改 MS WORD

    我试图保存通过 C 打开的文档 我也保留了文档界面的 TrackRevision 属性 现在我想获取修改文档的人的姓名 在 MS Word 中 我可以从审阅窗格中找到更改文档的用户的姓名 我如何通过 C 获得它 之后一旦用户点击 MS Wo
  • 在 ASP.NET MVC 中使用 bootstrap 创建模式

    我在 ASP NET MVC 项目上使用 NET Framework 4 5 Bootstrap v3 3 6 我想做的是创建一个模态表单 我尝试了以下方法 在主布局中创建了一个模态容器 div class modal fade style
  • 如何在网站上重新创建电子表格或共享点数据表视图?

    我正在尝试将用户从共享点解决方案迁移到网站 SQL 后端 一件事是每个人似乎都喜欢共享点视图和数据表视图来编辑和管理信息 什么是最好的电子表格 访问数据编辑解决方案 是否有任何第三方 ASP NET MVC 小部件是很好的替代品 Teler
  • 是否可以在 html 中将单选按钮标签助手值属性设置为“已选中”?

    我正在寻找一种方法来使用单选按钮标签帮助器上的值属性来通知按钮是否被选中 而不是使用单独的字段进行选择 我找到了 Shyju 的答案相关问题 https stackoverflow com questions 34570908 radio
  • 为什么 ASP.NET MVC 上的控制器是基于名称的?

    在 ASP NET MVC 中 我们需要对所有控制器使用后缀 Controller 这似乎是不必要的限制 有技术原因吗 我主要只是好奇 但可以看到更灵活的命名规则可以改善代码组织的情况 使用反射来搜索是否可以轻松发现可能的控制器类Contr
  • asp.net MVC ModelState.IsValid 返回 false

    我正在开发 ASP NET MVC 应用程序 我有一个视图模型如下 public class SampleInterestViewModel Properties defined One such property that shows a
  • 如何让 ASP.NET MVC 遵守我的自定义错误设置?

    在 web config 的 customErrors 标记中 我指向一个控制器 在我的控制器中 我重定向到由多个应用程序共享的外部错误页面
  • 如何根据多个条件创建所需的属性?

    我有一对单选按钮的列表 是 否 Q1 Y N Q2 Y N Q3 Y N Q4 Y N 我的模型中有一个属性public string MedicalExplanation get set 我的目标是 如果任何单选按钮已设置为 true 则
  • MVC Controller.UpdateModel(T) 实际上尝试做什么?

    当我提交 MVC 页面时 我从 UpdateModel 方法中的 System Web Mvc Controller 对象收到 IvalidOperationException MSDN 文档指出此方法执行以下操作 使用控制器当前值提供程序
  • 在 ASP.NET MVC 中调用 @Html.Action(...) 时如何指定命名空间

    当我尝试使用时Html Action在 ASP NET MVC 3 中 对于与当前控制器不同的命名空间中的控制器 我收到错误 Code Html Action Foo Application new id FG2 Error 路径控制器 r
  • 使用 Polly 在 HttpStatusCode.Unauthorized 之后重试

    我正在调用外部 API 并希望处理调用返回的事件Unauthorized HttpResponseMessage 发生这种情况时 我想刷新访问令牌并再次拨打电话 我正在尝试使用Polly使用以下代码 public async Task
  • 在 MVC3 视图中输入后显示度量单位的好方法是什么?

    我们开发了许多具有输入的系统 这些输入后面应该有一个相关的文本标签作为测量单位 例如平方米 立方米 吨 立方英尺等 我不需要做任何聪明的事情 比如测量单位之间的比例 只要确保它易于更新并且良好的实践即可 正在寻找相当自动的东西 这将计量单位

随机推荐

  • 每当 SwiftUI 中更新 CoreData 时更新状态变量

    从 CoreData 更新一些数据后 我还想更新一个State 可变为返回结果的数量 当CoreData改变时 Stepper应始终设置为返回结果的数量 然而 onAppear当我使用时也会发生火灾Stepper 我怎样才能办理登机手续on
  • 如何在ListView上使用Button的onClickListener方法

    我有一个习惯ListView其中包含一个Button 该按钮的功能是删除按钮 每当用户单击此按钮时 当前行将被删除 我该怎么做 我该如何设置onClickListener对于这个按钮 如何捕获该按钮所在的行 ID 提前致谢 In your
  • SAM Local 似乎没有运行授权者功能

    我刚刚开始使用SAM 本地 https github com thoeni aws sam local 但在尝试为我的端点配置授权者功能时遇到了问题 我一直在看主要 SAM 文档 https github com awslabs serve
  • 引用的错误类型不是注释类型:

    我得到了以下方面 Around execution public DisabledForBlockedAccounts annotation denyForTeam public Object translateExceptionsDeny
  • 在jsFiddle中引用GitHub文件

    是否有可能滥用从github存储库中获取文件作为jsFiddle中的外部资源 TLDR Visit rawgit com http rawgit com 这将直接从 GitHub 将您的文件弹出到 CDN 上 以便您可以使用它们 不幸的是
  • 模拟 6502 个时钟周期的最佳方法?

    我一直在研究 NES 模拟器的 CPU 我想知道管理多周期指令周期的最佳方法是什么 假设实现了一个周期的时间延迟 我可以根据指令的每个步骤单独增加周期 如下所示 void EXAMPLE INSTRUCTION step1 cycles s
  • 对形状内的元素进行聚类

    我见过这个解决方案 http jsfiddle net srvikram13 CLs8P 它似乎负责在 一致 形状内对元素进行聚类 而不会重叠 但是如果形状更加模糊怎么办 如下所示 我的前几次尝试似乎是将形状简化为其最基本的形式 然后检查元
  • 通过 setuptools 在 PyPi 上发布作者的正确方法

    我目前使用setuptools构建我的 Python 包 我已经在我的文件中以这种方式声明了两位作者pyproject toml file authors name X Y email email protected cdn cgi l e
  • iOS WebApp 不显示启动图像

    I added 在我网站的 head 标签之间 但它不适用于启动图像 这是正常的吗 您是否尝试在桌面浏览器中查看启动图像 如果是这样 那么我会在 IOS 移动设备上访问您的网站并将该应用程序添加到您的主屏幕 当您打开它时 您应该会看到启动屏
  • 错误 A2070:指令操作数无效

    错误位于 AfterLoop skope 行 mov esi edi 中 我该如何解决这个问题 节点删除函数 headptr nodeToremove removeNode proc headPtr 8 nodeToRemove headP
  • 改造 OKHTTP 离线缓存不起作用

    我阅读了数十个教程和 Stackoverflow 来解决我的问题 但没有任何效果对我有用 而且 它们中的大多数都很旧 所以 OKHTTP 可能以某种方式发生了变化 我想要的只是启用离线缓存用于改造 我正在使用 GET 我尝试仅使用offli
  • AWS Elastic Beanstalk 运行 Grunt 任务

    我想在 elastic beanstalk 上运行 node js 应用程序 我有一个客户端 它是通过繁琐的工作 jade less concat 等 构建的 我从 git 中排除了这个文件夹 我可以在本地运行这个grunt buildCl
  • 在发布到 AWS S3 之前,如何压缩/gzip 我的 mimified .js 和 .css 文件?

    我运行了 Google pagespeed 它建议压缩我的 js 和 css 消除首屏内容中阻碍渲染的 JavaScript 和 CSS 显示如何修复 Enable compression Compressing resources wit
  • tableView:cellForRowAtIndexPath 删除项目后以 nil indexPath 调用

    我有一个相当香草的UITableView由一个管理NSFetchedResultsController显示给定核心数据实体的所有实例 当用户通过滑动删除表视图中的条目时 tableView cellForRowAtIndexPath 最终被
  • 安装性能计数器的 Total 实例

    VS 2005 C 2 0 NET 2 0 3 0 Win2003 我正在尝试为多实例安装一组性能计数器 我注意到一些系统性能计数器类别设法保持 total 即使没有其他实例 也仍然存在 ASP NET Apps 2 0 50727 就是一
  • canvas.toDataURL() 无法正常工作[重复]

    这个问题在这里已经有答案了 我有一个画布 我在其中上传图像 代码如下 function handleImage e var reader new FileReader reader onload function event var img
  • 如何通过编辑 yml 文件更新部署

    官方Kubernetes 指南 https kubernetes io docs concepts workloads controllers deployment updating a deployment 指示通过执行命令行来更新部署s
  • F# 中的捷径相等性检查?

    在 F 中 等式运算符 通常是外延运算符 而不是内涵运算符 那太棒了 不幸的是 在我看来 F 并没有使用指针相等来简化这些扩展比较 例如 这段代码 type Z MT NMT of Z ref create a Z let a ref MT
  • 在 JavaScript 中,链式赋值可以吗?

    我对 JS 或其语法并不陌生 但有时 该语言的语义有时会让我感到困惑 今天上班的时候 一位同事提到了这一点 var a b 不等于 var a b or var a var b 因为第一个版本实际上将对空数组的引用分配给 a 和 b 我不太
  • mvc视图中的条件逻辑 vs htmlhelper vs action

    我有一个大视图 需要一些条件逻辑来决定在视图中间渲染几个 html 块中的哪一个 我的模型有一个属性 它可以有几个不同的值 决定要输出的 html 我通常会将条件逻辑放入 html 帮助程序中 但考虑到每个输出都是相当大的 html 块 我