首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC 3中“图形化”if语句的最佳实践

MVC 3中“图形化”if语句的最佳实践
EN

Stack Overflow用户
提问于 2011-02-24 21:14:25
回答 2查看 991关注 0票数 3

刚开始从传统的ASP转换到MVC,并想知道if语句的最佳实践,该语句用于确定HTML元素是否应可见,或决定HTML元素是否应可见。

示例:

代码语言:javascript
复制
if (type = 1)
{
    <img src="/Content/Images/gray.jpg" />
}
else
{
    <img src="/Content/Images/blue.jpg" />
}

我在这里看到了几个选择。

  1. 在我的视图中使用if语句(不太愿意)
  2. 使用HTML-helper (将有很多助手=很难处理代码)
  3. 在我的控制器中创建HTML片段并将其传递到我的视图中
  4. 使用JavaScript在文档加载时显示/隐藏元素。

<代码>G210

当然,上面的例子是对我的问题的简化。非常感谢你的帮助!

/Mike

编辑:举了一个不好的例子,下面是一个新的例子:

代码语言:javascript
复制
if (type = 1)
{
    <span class="class1">Something something</span>
}
else
{
    <div id="id1">
        text 
        <img src="/Content/Images/gray.jpg" />
    </div>
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-24 21:26:04

我个人更喜欢使用HtmlHelper扩展或声明性HtmlHelper来处理大多数琐碎的条件表达式。然而,在这种情况下,我可能会让我的懒惰占上风,并直接在视图中表达条件,如下所示:

代码语言:javascript
复制
<img src="/Content/Images/@(i == 1 ? "gray" : "blue").jpg" />

编辑

对于更复杂的场景,绝对可以使用HTML助手。如果您使用的是Razor语法,则可以通过将它们放入~/Views/Helpers目录中来创建声明性助手。它们的编写和使用都非常干净。

但创建一个好帮手背后的想法是它封装了一个意图。这很容易通过尝试给你的帮助者一个名字来测试。如果名称是IfOneThenShowSomethingElseGrayImage,您应该尝试将其进一步拆分。

因此,让我们假设您示例中的意图是根据用户类型显示有关当前用户的信息。你可以像这样创建一个帮助器:

代码语言:javascript
复制
@helper UserType(int type) {
   @if (type == 1) {
    <span class="class1">Something something</span>
   } else {
    <div id="id1">
        text 
        <img src="/Content/Images/gray.jpg" />
    </div>
   }    
}

然后在视图中使用它,如下所示:

代码语言:javascript
复制
@UserType(Model.UserType)

尽管它只在一个页面上使用,但它增强了视图中的可读性,并且可以在必要时重用。

这只是我的两个观点。

票数 1
EN

Stack Overflow用户

发布于 2011-02-24 21:23:20

就我个人而言,我开始使用一个单独的层来加载带有html特定信息的视图模型。

代码语言:javascript
复制
 public class ViewModel
 {
     public string ImageName { get; set; }
 }

保持视图的整洁:

代码语言:javascript
复制
<img src="/Content/Images/<%= Model.ImageName %>.jpg" />
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5105147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档