【发布时间】:2010-10-13 14:39:58
【问题描述】:
我有以下 HtmlHelper 方法,我想创建一个使用 JavaScript 进行重定向的按钮:
public static string JavaScriptButton(this HtmlHelper helper, string value,
string action, string controller, object routeValues = null, object htmlAttributes = null)
{
var a = (new UrlHelper(helper.ViewContext.RequestContext))
.Action(action, controller, routeValues);
var builder = new TagBuilder("input");
builder.Attributes.Add("type", "submit");
builder.Attributes.Add("value", value);
builder.Attributes.Add("class", "button");
builder.Attributes.Add("onclick", string.Format("javascript:location.href='{0}'", a));
builder.MergeAttributes(new RouteValueDictionary(htmlAttributes));
return MvcHtmlString.Create(builder.ToString(TagRenderMode.SelfClosing)).ToString();
}
问题是创建 onclick 处理程序的行被标记生成器转义,生成的 html 是:
<input class="button" onclick="javascript:location.href=''" type="submit" value="Return to All Audits" />
无论如何我可以阻止这种行为吗?
【问题讨论】:
-
你不能简单地使用一个链接 (
<a href=...>) 吗?我一直想知道为什么人们会在他们的 HTML 中使用 javascript 并使用表单提交按钮来执行重定向,当有为此目的设计的锚元素时。 -
可能是因为他想要按钮的视觉风格?但是他应该使用
type=button而不是提交。 -
你是对的,它应该使用按钮类型,我确实想要一个可视按钮。我确实创建了另一个按钮,该按钮使用标签生成器将表单包裹在提交中,但我遇到了样式问题和表单中嵌套表单的问题,这就是我走这条路的原因。
标签: asp.net asp.net-mvc-2