gpt4 book ai didi

asp.net-mvc - 如何避免使用 MVC 标记汤?

转载 作者:行者123 更新时间:2023-12-03 21:17:10 25 4
gpt4 key购买 nike

我正在阅读这篇文章,以证明 MVC 优于常规旧 php 的非 MVC(不使用 MVC,甚至可以使用经典的 asp,尽管很痛苦):

http://www.codinghorror.com/blog/2008/07/web-development-as-tag-soup.html

我找不到答案。我认为得到标签汤是不可避免的。是的,我知道 MVC 将模型和 Controller 分开,但是当你看到 View 时,一切都变得可怕了。我可以阅读发出的 html,与标签汤一样好或更好。

我不会使用单元测试,所以它不是那么重要的优势。我不确定如何避免丑陋的 View ,现在无论我如何让它枯萎 mvc 或只是发出 html。

我不认为使用所有奇怪的编码(它是代码)来维护 View 比使用 response.write "<table>" 更容易。 .

示例:Dealing with ASP.NET MVC "tag soup"

Arnis 的回答(对他或其他任何人没有冒犯)修复了问题中的可怕代码,但对我来说这仍然看起来很糟糕,或者至少不是我所期望的。对我来说,那些尖括号也可能是 <% %><?php ?> .

我喜欢codeigniter之类的东西,它确实是我见过的最干净的东西,但它仍然不是我所期望的。我想我希望 MVC 中存在一些让一切变得美丽的魔法。显然,除非真的非常小心,否则没有比使用经典 asp 更好的方法了,因为它与 View 有关。

这主要是关于 View 。不是关于哪种语言更适合什么或谁的模板引擎是最好的(它们都有相同的标记混合倾向)。

相信我。我 想要让 MVC 与我的共同开发人员一起工作,所以我根本不反对它作为一种范式。我不能仅仅因为每个人都这样做或类似的事情就让他们同意某件事。

感谢您的任何评论。我必须能够证明这些事情的合理性,虽然我了解 MVC 和我得到的东西,但这种观点让很多事情看起来像是在浪费时间。

编辑:一切似乎都针对特定的框架而不是计划。我看到了一些见解,但最终似乎除了纪律之外别无他法。谢谢大家的答案。

最佳答案

看看使用 Razor查看引擎,包含在 中MVC 3 .还要尝试将所有逻辑保留在 Controller 类中,并根据 View 中显示的内容构建模型。

  • Razor 是避免标签汤的一种明显方法,因为不需要任何 <%%>标签 - 只是一个 @在您的代码和 View 引擎确定 C# 结束和 HTML 开始的位置之前。
    <span class="name">@Model.Name</span>

    甚至循环和 if 语句在 .cshtml 中仍然看起来很性感。用 Razor 和那个魔法文件 @特点。
    @if(shouldDisplayDiv) {
    <div id="mydiv">Div is displayed!</div>
    }


    @foreach(User user in Model.Friends) {
    <a href="@user.Url"><img src="@user.ImageUrl" title="@user.Name" /></a>
    }

    Razor 还默认为您处理 HTML 编码,因此您的 View 不会充满 Html.Encode来电。 (注意:如果需要输出 HTML,可以使用 Html.Raw 辅助方法)。
  • 将您的逻辑放入 Controller 理想情况下, View 中不需要大型代码块。尝试让模型对象包含 View 的所有动态数据,与 View 中显示的完全一样。目标是在您的 View 中根本没有任何 C# 代码(毫无意义,但如果这是目标,请查看您可以接近它!)。
  • 部分意见可以很好地分离 View 的不同部分(但尽量不要过多地使用它们)。您还可以将不同的模型对象传递给每个局部 View ,我发现这对于一些大循环或类似于 flair 的小循环很方便。 .
  • HTML 助手 也非常有用(感谢 subkamran)。这里与上面提到的局部 View 有类似的概念,但 HtmlHelpers 略有不同,因为您指定方法的参数(及其类型),而不是您可以传递单个模型对象的局部 View 。这是 good example of how to implement them .同样,这些在您的 cshtml 中看起来非常整洁。代码。
     <div class="specialdiv">@Html.SomeMethod(Model, "String", 5)</div>
  • 客户端 MVC 是另一种选择,如果您正在开发重 AJAX 的 Web 应用程序,这是一个强烈的建议。按照 Controller 中的逻辑,您将使用客户端 MVC 框架,如 Backbone.js以整洁的方式模板化 HTML,并使用 jQuery .ajax()与您的 Controller 来回交谈。这是分离表示层的好习惯,为您留下一些漂亮的 View 标记!

  • 我坚持这些小指导方针,它对我来说就像一种魅力。漂亮、干净的 HTML 标记,偶尔会出现 @特点。非常容易维护(至少 View 是!)。

    编辑:请注意,所有这些点都包含在 ASP.NET MVC 3 中,并且就 Microsoft 而言都是“最佳实践”。无需安装任何额外的框架、插件或插件即可遵守这些准则。

    关于asp.net-mvc - 如何避免使用 MVC 标记汤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8661370/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com