Захватив ссылку нажмите на Asp.net MVC - PullRequest
0 голосов
/ 17 января 2012

У меня есть многочисленные ссылки в моем представлении, которые показаны, как показано ниже

retailerName1 ---------- info ---------- anchor-Link-retailer1

retailerName2 ---------- информация ---------- anchor-Link-retailer2

retailerName3 ----------info ---------- anchor-Link-retailer3

Теперь мне нужно захватить клик пользователя по любой из этих ссылок, а затем на сервере.хотите увеличить поле clickCount для этой конкретной записи продавца в базе данных.

Для этого, я полагаю, мне нужен какой-то клиентский скрипт, такой как код jquery, который должен отправлять данные хранилища, а затем использовать эти данные на сервере для дальнейшей работы.Пожалуйста, скажите мне код jquery для этого, который будет отправлять соответствующие данные.

ОБНОВЛЕНИЕ

это код ссылки

<a href="retailerURL.com" target ="_blank">anchor-Link-retailer3</a>

1 Ответ

1 голос
/ 17 января 2012

Не совсем понятно, что вы называете appropriate data в своем вопросе, но разве недостаточно идентификатора розничной торговли?Вам не нужен JavaScript для этого.При создании вашей ссылки вы можете передать этот идентификатор продавца:

@foreach (var retailer in Model.Retailers)
{
    <div>
    @retailer.Name

    ... some info

    @Html.ActionLink(
        "some link text", 
        "someAction", 
        "someController", 
        new { retailerId = retailer.Id },
        null
    )
    </div>
}

, а внутри соответствующего действия контроллера вы можете использовать этот идентификатор продавца, чтобы делать то, что вы намеревались сделать:

public ActionResult SomeAction(int retailerId)
{
    ...
}

ОБНОВЛЕНИЕ:

Как только появляется возможность использовать AJAX-запрос для отправки идентификатора продавца в действие вашего контроллера при нажатии на ссылку.Для этого вам понадобится идентификатор продавца.Вы можете использовать атрибут data5 * HTML5 на привязке:

<a href="retailerURL.com" target ="_blank" class="retailer" data-retid="123" data-url="@Url.Action("SomeAction")">anchor-Link-retailer3</a>

, а затем использовать jQuery, чтобы подписаться на событие click всех этих ссылок и отправить запрос AJAX:

$(function() {
    $('.retailer').click(function() {
        var url = $(this).data('url');
        var retailerId = $(this).data('retid');
        $.post(url, { retailerId: retailerId });
    });
});

ОБНОВЛЕНИЕ 2:

Другая возможность - выполнить перенаправление на веб-сайт продавца внутри действия вашего контроллера.Таким образом, вам не нужен AJAX:

@Html.ActionLink(
    "some link text", 
    "someAction", 
    "someController", 
    new { retailerId = retailer.Id },
    new { target = "_blank" }
)

, и внутри действия контроллера обновите базу данных, загрузите веб-сайт продавца и перенаправьте:

public ActionResult SomeAction(int retailerId)
{
    // TODO: 
    // 1. fetch the retailer website given the id:
    // 2. update the database with the info
    // 3. redirect to the retailer website

    string retailerWebsite = ...
    return Redirect(retailerWebsite);
}
...