0

我有一个 html 按钮设置并使用一组所需的属性运行,我想将其转换为基于文本的链接。此外,为了让自己熟悉工作的 html 助手和智能感知,我想看看如何将这些属性硬塞到 ActionLink 中:

<input type="button" id="RemoveRegistration_Submit<%=row.ID %>" 
value="Remove From Cart" 
onclick="$('#Step2_RemoveRegistrationForm input[name=id]').val('<%=row.ID %>'); $('#Step2_RemoveRegistrationForm').submit();" 
align="right" />

谢谢

4

2 回答 2

1

按钮不能像没有 javascript 的链接一样起作用。
一般来说 - 这是一种不好的做法(搜索引擎无法正确索引您的页面等)。

我建议您使用锚标签并使它们看起来像一个按钮。

但如果你真的需要它——这篇文章提供了一个答案。

编辑:

对不起。我的回答有点太快了。

这不是您要问的(不涉及 HtmlHelper),但这就是我解决此问题的方法:

鉴于我会定义锚点(没有hrefs的锚点确实通过了W3验证):

<a id='removefromcart_<%=row.ID%>' title='Remove from cart' 
   class='remove-link' />

在外部 javascript 文件中:

   var onclick = function(event){
        event.preventDefault();
        var link = $(event.targetSource());

        //tag ids should be injected through view asp/cx
        $('#Step2_RemoveRegistrationForm input[name=id]') 
            .val(link.attr('id').split('_')[1])
    };
    $('a[id^=removefromcart]').click(onclick);  

在 CSS 中:

 a {cursor:pointer;} /*anchors without href by default haven't pointer*/

我相信在 HtmlHelpers 中使用 javascript 会很麻烦。

编辑2:

锚文本在标签内定义。我总是混淆这一点。而且似乎 targetSource()也是错误的。尝试重写它:event.targetSource()=>event.target。

于 2009-09-22T10:14:12.103 回答
0

它不应该那么难......但我认为你的意思是 Html.Link 因为 ActionLink 意味着你需要从路由表生成链接。

<%= Html.Link("Remove from Cart", "#", new {onclick = "#Step2_RemoveRegistrationForm input[name=id]').val('<%=row.ID %>'); $('#Step2_RemoveRegistrationForm').submit();"}) %>
  • 参数#1:链接文本
  • 参数#2:href
  • 参数#3:htmlAttributes

    public static string Link(this HtmlHelper htmlHelper, string linkText, string href, object htmlAttributes) {

    TagBuilder tagBuilder = new TagBuilder("a"){ InnerHtml = linkText; }

    tagBuilder.MergeAttributes(htmlAttributes);

    tagBuilder.MergeAttributes("href", href);

    返回 tagBuilder.ToString(TagRenderMode.Normal);

    }

并且不要忘记在视图上 <%@ Import Namespace="xxxxxx" %> 以便使用扩展方法。

于 2009-09-22T12:11:20.493 回答