加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 如何避免使用MVC的标签汤?

发布时间:2020-12-15 23:44:47 所属栏目:asp.Net 来源:网络整理
导读:我正在阅读这个我的追求,以证明MVC对非mvc像常规老php(不使用MVC,即使经典的asp可以使用,虽然痛苦): http://www.codinghorror.com/blog/2008/07/web-development-as-tag-soup.html 我找不到答案.我觉得拿标签汤是不可避免的.是的,我知道MVC分离了模型和控制
我正在阅读这个我的追求,以证明MVC对非mvc像常规老php(不使用MVC,即使经典的asp可以使用,虽然痛苦):

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

我找不到答案.我觉得拿标签汤是不可避免的.是的,我知道MVC分离了模型和控制器,但是当你看到这一切,一切都变得可怕.我可以读取发布的HTML,就像标签汤一样好或更好.

我不会使用单元测试,所以这不是一个重要的优势.我不知道我怎么能避免一个丑陋的观点,现在关于我如何得到它枯燥的mvc或只是发布html.

我使用所有奇怪的编码(而且是代码),比使用response.write“< table>”更容易维护视图.

例如:Dealing with ASP.NET MVC “tag soup”

Arnis的答案(对他或任何其他人没有任何的攻击),修正了这个问题中的可怕代码,但对我来说,看起来还不错,至少不是我期望的.对我来说,这些尖括号可能也是<%%>或<?php?>.

我喜欢像codeigniter这样的东西,它真的是我看到的最干净的,但它仍然不是我期望的.我想我希望有一些魔术存在于MVC中,使得一切都变得美丽.显然,除非真的真的很小心,否则与传统的asp相比,没有什么好处,因为它与视图相关.

这主要是关于这个观点.不是哪种语言对于什么或谁的模板引擎是最大的(他们都具有相同的标记混合倾向)更好.

相信我.我想让MVC和我的共同开发人员一起工作,所以我并没有把它视为一个典范.我不能让他们同意一些事情,只因为每个人都在做这样的事情.

感谢任何意见.我必须能够证明这些东西,而在理解MVC和我所得到的东西的同时,这个观点使得很多事情似乎是浪费时间.

编辑:一切似乎都面向特定的框架而不是计划.我看到一些洞察力,但最终似乎除了纪律之外,没有办法.感谢大家的答案.

解决方法

看看使用MVC 3中包含的 Razor视图引擎.还要尽量把所有的逻辑保存在Controller类中,并根据View中显示的内容构建一个Model.

>剃刀是避免标签汤的一个明显的方法,因为不需要任何<%和%>标签 – 简单的一个@在你的代码和视图引擎之前,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>
}

默认情况下,剃刀还会为您处理HTML编码,因此您的视图不会充满Html.Encode调用. (注意:如果需要输出HTML,可以使用Html.Raw帮助器方法).
将逻辑放入控制器将理想地消除视图中对大型代码块的需求.尝试让模型对象包含视图的所有动态数据,与视图中显示的动态数据完全相同.目的在于您的视图中没有任何C#代码(无意义,但如果是目标,请查看您可以接近多少)!
>部分视图可以很好地分离您的视图的不同部分(但是尽量不要太多使用它们).您还可以将不同的模型对象传递给每个部分视图,我发现它可以方便地使用一些大的循环,或者类似于flair的一些.
> HTML助手也很有用(谢谢subkamran).这里有一个与上述部分视图类似的概念,但HtmlHelpers稍微不同,因为您指定了方法的参数(及其类型),而不是可以传递单个Model对象的部分视图.这是一个good example of how to implement them.再次,这些可以看起来很整洁你的cshtml代码.

<div class="specialdiv">@Html.SomeMethod(Model,"String",5)</div>

>客户端MVC是另一种选择,如果您正在开发AJAX重的Web应用程序,则有强烈的建议.遵循控制器中的逻辑,您将使用客户端MVC框架(如Backbone.js)以整洁的方式对HTML进行模板化,并使用jQuery .ajax()与控制器进行通话.分离您的表现层是一个很好的做法,留下一些美丽的视图标记!

我坚持这些小指导,它对我而言就像一个魅力.很好,干净的HTML标记与偶尔的@字符.很容易维护(至少视图是!).

编辑:请注意,所有这些要点都包含在ASP.NET MVC 3中,并且都是微软所关心的所有“最佳实践”.没有必要安装任何额外的框架,插件或插件来遵守这些准则.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读