【问题标题】:Simplifying ASP.Net MVC Razor Code简化 ASP.Net MVC Razor 代码
【发布时间】:2015-08-03 23:26:20
【问题描述】:

我正在寻找有关如何在我的 ASP.Net MVC 项目中的一个视图文件中简化/优化一段代码的建议。该代码有效,但我不确定我是否以最好的方式编写了它。

基本上,该代码用于显示文档链接列表,每个链接左侧都有小缩略图。主要问题是,有两种不同类型的文档,每种类型的缩略图都必须存储在不同的位置,这是项目要求,无法更改。

我目前正在使用下面显示的视图代码完成此操作。

// Display a link to every document.
foreach (var document in documentList)
{
    <a href="@Url.Content("~/Document/DownloadDocument/" +
        document.documentid)" target="_blank">
    @{
        // This will be the root of all the paths.
        var path = "~/Document/DisplayImage/";

        // If it's a Type 1 document, we need to use a different path.
        if (document.documentType == "Type 1") {
            path += "Path/To/Image/Folder";

            <img id="imageHolder" src="@Url.Content(path)"
                 onerror="imgError(this);" />
            @document.documentname
        }
        else {
            path += "Path/To/Different/Image/Folder";

            <img src="@Url.Content(path)" />
            @document.documentname
        }
    }
    </a>
    <br />
}

就像我说的,代码可以工作,但我对它的编写方式不太满意。有人有什么建议吗?

【问题讨论】:

    标签: html asp.net-mvc razor


    【解决方案1】:

    在使用 MVC 时,最好让您的视图保持哑(没有逻辑,只是渲染)。

    您可以通过使用强类型视图并在控制器中执行所有逻辑来完成此操作。看起来您可能已经这样做了,因为您有一个 documentList

    在这种情况下,documentList 应该是视图模型对象的列表,这些对象已经从控制器上设置了适当的图像路径。

    【讨论】:

      【解决方案2】:

      我建议将文档图像的路径移动到模型中。这样您就可以只显示模型中路径中的图像,而不必在视图中添加任何逻辑。

      【讨论】:

        猜你喜欢
        • 2011-07-18
        • 2021-08-15
        • 1970-01-01
        • 2011-05-03
        • 1970-01-01
        • 2016-10-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多