相关疑难解决方法(0)

<button>与<input type ="button"/>.哪个用?

在查看大多数网站(包括SO)时,大多数网站使用:

<input type="button" />
Run Code Online (Sandbox Code Playgroud)

代替:

<button></button>
Run Code Online (Sandbox Code Playgroud)
  • 如果有的话,两者之间的主要区别是什么?
  • 是否有正当理由使用一个而不是另一个?
  • 有合理的理由使用它们吗?
  • 是否使用<button>兼容性问题,看到它没有被广泛使用?

html compatibility button html-input

1588
推荐指数
14
解决办法
59万
查看次数

如何在ASP.NET中使用按钮标记?

我想<button>在ASP.NET网站中使用较新的标签,除其他外,它允许CSS样式的文本并在按钮内嵌入图形.asp:Button控件呈现为<input type="button">,有没有办法让预先存在的控件渲染到<button>

从我读过的内容来看,当按钮位于a中时<form>,IE发布按钮的标记而不是value属性是不兼容的,但是在ASP.NET中它将使用onclick事件来触发__doPostBack,所以我不喜欢认为这将是一个问题.

我有什么理由不这样做吗?如果没有,您将如何使用asp:Button或基于它的新服务器控件来支持它?如果可以避免,我宁愿不编写自己的服务器控件.


起初该<button runat="server">解决方案有效,但我立即遇到了需要具有CommandName属性的情况,HtmlButton控件没有该属性.看起来我将需要创建一个从Button继承的控件.

我需要做什么才能覆盖渲染方法并使其呈现我想要的东西?


UPDATE

DanHerbert的回复让我有兴趣再次寻找解决方案,所以我花了一些时间来研究它.

首先,有一种更容易的方法来重载TagName:

public ModernButton() : base(HtmlTextWriterTag.Button)
{
}
Run Code Online (Sandbox Code Playgroud)

Dan的解决方案存在的问题是标记的innerhtml被放置在value属性中,这会导致回发时出现验证错误.一个相关的问题是,即使你正确地渲染value属性,IE的<button>标签的braindead实现也会发布innerhtml 而不是值.因此,任何实现都需要覆盖AddAttributesToRender方法才能正确呈现value属性,并且还为IE提供某种解决方法,因此它不会完全搞砸回发.

如果要利用数据绑定控件的CommandName/CommandArgument属性,IE问题可能是不可克服的.希望有人可以为此建议解决方法.

我在渲染方面取得了进展:

ModernButton.cs

这将呈现为<button>具有正确值的正确html ,但它不适用于ASP.Net PostBack系统.我已经写了一些我需要提供的Command事件,但它没有激发.

当用常规的asp:Button并排检查这个按钮时,它们看起来与我需要的差异相同.所以我不确定Command在这种情况下ASP.Net是如何连接事件的.

另一个问题是,不呈现嵌套的服务器控件(正如您可以使用ParseChildren(false)属性看到的那样).在渲染过程中将文字html文本注入控件非常容易,但是如何允许支持嵌套服务器控件呢?

html c# asp.net htmlbutton

62
推荐指数
5
解决办法
8万
查看次数

Asp.net mvc3剃须刀带有多个提交按钮

我正在使用MVC3 Razor.我在我的视图上设置了2个提交按钮,但我遇到的问题是两个提交按钮都会导致模型的验证.我想将具有特定输入控件的单个提交按钮连接起来进行验证.

asp.net validation asp.net-mvc-3

32
推荐指数
3
解决办法
5万
查看次数