Гиперссылка или кнопка не запускаются внутри шаблона элемента повторителя - PullRequest
0 голосов
/ 04 октября 2018

У меня есть повторитель, а внутри шаблона элемента у меня есть кнопка и якорь.

<asp:Repeater runat="server" ID="rptCategoryList" OnItemDataBound="rptCategoryList_ItemDataBound">
    <ItemTemplate>
        ....
        <div style="margin-left: 81.6%;">
            <span runat="server" id="spnRegister" clientidmode="static" class="register pull-right">
                <button class="btn btn-info btn-lg" style="float: ; margin-right: 40px; margin-top: -150px; background-color: #3697EA">
                    <a href="register.aspx" style="color: white;" target="_self">Register</a>
                </button>
            </span>
        </div>
        ....
    </ItemTemplate>

при нажатии этой кнопки она перезагружает ту же страницу, скорее всего, в register.aspx.Я использовал «просмотреть исходный код страницы» и href настроен правильно.

Я удалил привязку и добавил класс к кнопке и использовал jQuery:

        <button class="btn btn-info btn-lg registerSilver" style="float: ; margin-right: 40px; margin-top: -150px; background-color: #3697EA">
            Register
        </button>

$(function () {
    $('.registerSilver').click(function () {debugger
        window.location = 'register.aspx';
    });
});

все еще не работает, продолжает перезагружать то же самоеpage.

Я даже пытался добавить runat = "server" к гиперссылке и установить его href в элементе данных ретранслятора, не повезло.

Что мне здесь не хватает?

Ответы [ 3 ]

0 голосов
/ 04 октября 2018

Если вы просто хотите перенаправить, тогда почему вы используете кнопку вместо этого, вы можете просто передать класс CSS кнопки в тег привязки и сделать его похожим на кнопку как

<asp:Repeater runat="server" ID="rptCategoryList" OnItemDataBound="rptCategoryList_ItemDataBound">
    <ItemTemplate>
        ....
        <div style="margin-left: 81.6%;">
            <span runat="server" id="spnRegister" clientidmode="static" class="register pull-right">                
                    <a href="register.aspx" class="btn btn-info btn-lg" style="color: white; float: ; margin-right: 40px; margin-top: -150px; background-color: #3697EA" target="_self">Register</a>
            </span>
        </div>
        ....
    </ItemTemplate>

Это будет работать

0 голосов
/ 04 октября 2018

Вы также можете заменить кнопку html на кнопку asp:

<asp:Button runat="server" CssClass="btn btn-info btn-lg registerSilver" PostBackUrl="register.aspx" Text="Register"/>

Таким образом, вы можете установить атрибут PostBackUrl.

0 голосов
/ 04 октября 2018

Поведение по умолчанию тега <button> запускает отправку формы (т. Е. <form runat="server"> на странице ASPX), что, вероятно, вызывает обратную передачу на ту же страницу вместо перенаправления на URL-адрес страницы, указанный в ссылочной ссылке.Попробуйте явно установить атрибут type="button", как в примере ниже:

<button type="button" class="btn btn-info btn-lg" style="float: ; margin-right: 40px; margin-top: -150px; background-color: #3697EA">
    <a href="register.aspx" style="color: white;" target="_self">Register</a>
</button>

Или используйте функцию preventDefault() для click обработчика событий в jQuery, чтобы предотвратить действие по умолчанию для этой кнопки:1011 *

$('.registerSilver').click(function (e) {
    e.preventDefault();
    debugger;
    window.location = 'register.aspx';
});
...