Преобразовать кнопку HTML в ActionLink - PullRequest
0 голосов
/ 22 сентября 2009

У меня есть кнопка 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" />

ТНХ

Ответы [ 2 ]

1 голос
/ 22 сентября 2009

Кнопки не могут работать как ссылки без 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*/

Полагаю, было бы слишком грязно разбираться с JavaScript в HtmlHelpers.

EDIT2:

Якорный текст определяется внутри тегов. Я всегда путаю это. И кажется, что targetSource () тоже неверен . Попробуйте переписать его: event.targetSource () => event.target.

0 голосов
/ 22 сентября 2009

Это не должно быть так сложно .... но я думаю, что вы имеете в виду Html.Link, потому что ActionLink означает, что вам нужно создать ссылку из таблицы маршрутов.

<%= Html.Link("Remove from Cart", "#", new {onclick = "#Step2_RemoveRegistrationForm input[name=id]').val('<%=row.ID %>'); $('#Step2_RemoveRegistrationForm').submit();"}) %>
  • параметр # 1: linkText
  • параметр # 2: href
  • параметр # 3: атрибуты html

    публичная статическая строка Link (этот HtmlHelper htmlHelper, строка linkText, строка href, объект htmlAttributes) {

    TagBuilder tagBuilder = новый TagBuilder ("a") {InnerHtml = linkText; }

    tagBuilder.MergeAttributes (htmlAttributes);

    tagBuilder.MergeAttributes ("href", href);

    return tagBuilder.ToString (TagRenderMode.Normal);

    } ​​

и не забудьте <% @ Import Namespace = "xxxxxx"%> в представлении, чтобы использовать метод расширения.

...