我正在进入ASP.NET(C# - 我知道这对于这个特定的问题并不重要,但完全披露和所有这些),虽然我喜欢asp: -style控件省了很多繁琐的HTML-制作,我经常对某些行为感到沮丧。 我在使用Master Pages时遇到了一个问题:我的<asp:BulletedList ID="nav"> ,当转换为HTML时,变成<ul id="ct100_nav">

还有其他问题 - 我注意到当你自动填充DataGrid时,它会在结果表中添加我不一定想要的属性。

我知道当你依靠一个框架来接管你的一些繁琐的职责时,你必须接受一定数量的“约定优于配置”,但这些情况下的“约定”并不是任何已建立的约定。 ,而是不必要的额外。 我知道为什么 ID会添加前缀,但我应该能够调整并关闭这样的东西,特别是因为,作为一个网络标准传播者,我不会在单个页面中复制HTML id。

所以这里的问题是那些比我更经验丰富的ASP.NET开发人员:在开发和部署应用程序的经验中,你如何利用这些控件? 您是否发现自己回归硬编码的HTML? 你用混合物吗? 我不想在这些控件中围绕特殊怪癖设计我的HTML,但是,如果可能的话,我想在可能的情况下利用它们。

什么是男孩要做?

===============>>#1 票数:13 已采纳

亲身,

我认为标准的ASP.NET控件适用于内部的东西 - 在这种情况下,快速和肮脏是好的。 但是,我曾与一位同时也是设计师的Web开发人员合作,他拒绝使用ASP.NET控件,只使用HTML代码并在需要时添加runat =“server”标签。 这更多是因为他想知道他的HTML究竟是如何呈现的,当时无论如何,一些ASP.NET控件都无法实现标准兼容性。

我坐在中间的某个地方 - 在适当的地方使用HTML,而不是在不适用时。 使用CSS控件适配器,您可以最好地兼顾两个世界

===============>>#2 票数:13

我真的很欣慰地看到一些意见在这里同意我自己:ASP.NET作为模板语言非常差。

我只是想反驳一下这里提出的几个专业点(火焰服!):

戴夫沃德提到身份证的碰撞 - 这是事实,但我处理得有多糟糕。 我更倾向于看到xpath或深度css选择器引用的节点,而不是使ID无效,除非延迟到像clientID这样的ASP.NET内部 - 它只是让编写CSS和JS变得更加无意义。

Rob Cooper谈论控件如何替代HTML,所以一切都很好(释义,请原谅Rob) - 好吧,这不好,因为他们采用现有的,理解得很好的语言并说“不,你必须按我们的方式做事现在“,他们的方式执行很差。 例如asp:panel在一个浏览器中呈现一个表,在另一个浏览器中呈现一个div! 没有文档或执行,登录控件(以及许多其他标记)的标记是不可预测的。 你是如何让设计师针对它编写CSS的呢?

Espo写道如果平台更改了html,控件如何为您提供抽象的好处 - 这显然是循环的(它只是因为平台正在改变而改变,如果我只是在那里拥有自己的HTML,则不需要)实际上会产生问题。 如果控件将随着更新再次改变,我的CSS应该如何应对?

护理人员会说“是的,但你可以在配置中改变它”,或者讨论覆盖控件和自定义控件。 那我为什么要这么做? 用于解决其中一些问题的css友好控件包除了它的非语义标记之外什么都没有解决ID问题。

使用webform应用程序开箱即用MVC(抽象概念,而不是3.5实现)是不可能的,因为这些控件可以紧密地绑定视图和控件。 传统的网页设计师现在有一个进入门槛,因为他必须参与服务器端代码来实现曾经是CSS和JS的独立领域。 我同情这些人。

我非常同意Kiwi的观点,即控件允许对特定配置文件的应用程序进行一些非常快速的开发,并且我接受无论出于何种原因某些程序员发现HTML令人不快,并且进一步说明ASP.NET的其他部分给你带来的好处,这需要这些控制, 可能是物有所值。

然而, 对失去控制感到不满,我觉得处理代码隐藏的类,样式和脚本等事情的模型是一个错误的退步步骤,我进一步认为有更好的模板模型(微格式和xslt的实现)虽然用这些替换控件是非平凡的,但这个平台)。

我认为ASP.NET可以从LAMP和rails世界中的相关技术中学到很多东西,直到那时我希望能够在最好的情况下使用3.5 MVC。

(对不起那么久</ rant>)

===============>>#3 票数:4

简短的回答是,除非你有充分的理由,否则你不应该使用标准HTML控件的asp:...版本。

初级开发人员经常被吸引使用这些控件,因为大多数ASP.NET书都涵盖了这些控件,所以假设它们必须更好。 他们不是。 在这一点上,经过8年的ASP.NET开发,我只能想到2到3个案例,其中使用asp:... INPUT控制标准HTML实际上是有意义的。

===============>>#4 票数:2

至于服务器控件上的ID:您可以通过访问ClientID找到要写入浏览器的实际ID。 这样你可以组合服务器端og客户端脚本,仍然没有硬编码_id =“ct100_nav”_

我总是尝试使用包含的控件而不是“黑客”HTML,因为如果稍后有更新或一些改进,我的所有代码仍然可以通过替换框架来工作,我不必更改任何HTML。

希望这可以帮助

===============>>#5 票数:2

@Brian,是的! 您几乎可以控制所有行为。考虑创建自定义控件(有三种类型)。 最近,我给他们的概述在我的问题在这里

强烈建议检查出来,帮助我没有尽头:)

===============>>#6 票数:1

我也是在冒险进入ASP.NET并且也有类似的挫折。但是,你很快就会习惯它。 你只需要记住, 你没有繁琐的HTML制作的原因是因为ASP.NET控件为你做了一切

在某种程度上,你可以控制/调整这些东西,即使它意味着继承控件并从那里调整HTML输出。

我必须在过去做到这一点,某些控件默认情况下没有通过W3C验证,在这里和那里添加一些额外的标记,所以我只需要根据需要进行覆盖和编辑(一个修复太简单了几分钟)..

我会说了解控制系统是如何工作的。然后自己敲几下,这真的帮助我了解最新情况,所以如果我遇到任何问题,我知道该去哪里。

===============>>#7 票数:1

HTML呈现这些ID,因为它的ASP.NET是防止ID冲突的方式。 每个容器控件(如主页面或向导控件)都会在其子项的ID上添加“ID_”。

对于子弹列表,ListView提供了一个很好的中间地带。 您仍然可以将其绑定到数据源,但它可以更加严格地控制呈现的HTML。 Scott Gu在这里有一个很好的ListView介绍:

http://weblogs.asp.net/scottgu/archive/2007/08/10/the-asp-listview-control-part-1-building-a-product-listing-page-with-clean-css-ui。 ASPX

===============>>#8 票数:0

如果您希望对渲染的HTML进行那么多控制,请查看ASP.NET MVC

===============>>#9 票数:0

如果ASP.NET添加的ID前缀是您以后使用JS或其他东西访问它们的问题...您有.ClientID属性服务器端。

如果ASP.NET添加的开销你应该考虑ASP.NET MVC(仍然是预览),你可以完全控制发出的html。

我正在转向MVC,因为我不喜欢所有添加的内容....

===============>>#10 票数:0

我认为这里的大多数答案都是设计师的观点。 在一个中小型项目中,似乎是同步代码和CSS / HTML并使它们符合标准且干净的开销。 设计师的方法是完全控制渲染的HTML。 但是有很多方法可以在ASP.NET中完全控制。 对我来说,在aspx / ascx文件中使用所需的HTML是最不可扩展和脏的方法。 如果要通过CSS设置控件样式,可以始终通过CssClass属性设置类服务器端。 如果你想通过JS访问它们,你可以再次使用正确的ID服务器端发出JS。 这提供的唯一缺点是开发人员和设计师必须密切合作。 无论如何,在任何大型项目中这都是不可避免的。 但ASP.NET提供的优势远远超过这些困难。 尽管如此,如果你想要符合标准的HTML,皮肤支持和其他好东西来控制渲染标记,你总是可以使用第三方控件。

===============>>#11 票数:0

正如Dave Ward已经提到的那样,“它是ASP.NET防止ID冲突的方式。”

一个非常好的例子是,如果您尝试将控件放在自定义控件中,然后在转发器中使用该自定义控件,那么自定义控件的HTML将为页面多次输出。

正如其他人所提到的,如果您需要访问javascript的控件,请使用ClientScript属性,该属性将允许您访问ClientScriptManager并以这种方式将脚本注册到页面。 确保在编写脚本时使用您尝试引用的控件上的ClientID属性,而不是仅键入控件的ID。

  ask by Brian Warshaw translate from so

未解决问题?本站智能推荐: