Asp.net mvc “最佳实践”;“图形”;如果MVC 3中的状态为

Asp.net mvc “最佳实践”;“图形”;如果MVC 3中的状态为,asp.net-mvc,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 3,刚刚开始从经典ASP转换到MVC,并想知道用于决定HTML元素是否可见或该HTML元素是否可见的if语句的最佳实践 示例: if (type = 1) { <img src="/Content/Images/gray.jpg" /> } else { <img src="/Content/Images/blue.jpg" /> } if(类型=1) { } 其他的 { } 我在这里看到了几个选择 1.在我的视图中使用if语句(不希望) 2.使用HTML

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

示例:

if (type = 1)
{
    <img src="/Content/Images/gray.jpg" />
}
else
{
    <img src="/Content/Images/blue.jpg" />
}
if(类型=1)
{
}
其他的
{
}
我在这里看到了几个选择
1.在我的视图中使用if语句(不希望)
2.使用HTML助手(将有很多助手=难以使用代码)
3.在我的控制器中创建HTML代码段并传递到我的视图中
4.使用JavaScript在文档加载时显示/隐藏元素。

上面的例子当然可以简化我的问题。非常感谢你的帮助!
/迈克

编辑: 举一个坏例子,这里有一个新的:

if (type = 1)
{
    <span class="class1">Something something</span>
}
else
{
    <div id="id1">
        text 
        <img src="/Content/Images/gray.jpg" />
    </div>
}
if(类型=1)
{
什么东西
}
其他的
{
正文
}

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

 public class ViewModel
 {
     public string ImageName { get; set; }
 }
保持视图干净:

<img src="/Content/Images/<%= Model.ImageName %>.jpg" />
.jpg/>

我个人更喜欢使用HtmlHelper扩展或声明性HTML帮助程序来处理除最琐碎的条件表达式之外的所有表达式。但是,在这种情况下,我可能会让我的惰性获胜,并直接在视图中表达条件,如下所示:

<img src="/Content/Images/@(i == 1 ? "gray" : "blue").jpg" />
然后在您的视图中使用它,如下所示:

@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>
   }    
}
@UserType(Model.UserType)
尽管它只在一个页面上使用,但它增强了视图的可读性,并且在必要时可以重用


只要我的两分钱。

谢谢!但正如我所说的,上面的例子是一个非常简单的例子。想象一下if语句是关于显示a或a的,也可以是关于显示a和a或什么都不显示的语句。与我正在编写的实际代码相比,这仍然是一个非常简单的例子。谢谢!这个例子没有详细说明在我看来,x很重要,直到事情变得如此复杂,应该提供一个完全不同的视图。好吧!那么你会如何处理我发布的新示例?我曾想过使用HtmlHelpers,但开始思考,什么是最好的:在我的部分视图中使用10个if语句,或者在特定视图中使用10个额外的HtmlHelpers…我很瘦k这会让事情变得更糟。你没有把所有的UI都放在一个页面上,而是把逻辑分割开来,然后有人来搜索。广播意图很棒,但当你无法轻松浏览代码库时就不行了。@jfar-我知道你是怎么想的。就像我说的,只有我的2美分。我通常运行高度基于约定的项目,所以我知道如果我“我看到了这一点,我会在那个文件中找到帮助者。我曾经使用经典ASP,所以我无法忍受视图中的代码:)是的,我想每个人都有自己的。我正在从事一个项目,在这个项目中,你的技术被提升到了一个极端的水平,很难改变。