将HTML按钮转换为ActionLink

时间:2009-09-22 10:09:18

标签: asp.net-mvc helpers actionlink

我有一个html按钮设置,并且具有一系列必需属性,我想将其转换为基于文本的链接。另外,所以我可以熟悉html助手和intellesense的工作原理我想看看如何将这些属性运用到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" />

THX

2 个答案:

答案 0 :(得分:1)

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

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

但如果你真的需要它 - this文章提供了答案。

编辑:

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

这不完全是你要问的(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来解决它会太麻烦。

<强> EDIT2:

锚文本在标记内定义。我一直很困惑。似乎targetSource()is wrong也是如此。尝试重写它:event.targetSource()=&gt; event.target。

答案 1 :(得分:0)

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

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

    public static string Link(这个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);

    }

并且不要忘记&lt;%@ Import Namespace =“xxxxxx”%&gt;在视图上以使用扩展方法。