2012-01-17 6 views
0

У меня есть многочисленные ссылки на мой взгляд, которые показаны как нижеЗахватив ссылку, нажмите на ASP.Net MVC

retailerName1 ---------- Информация ------- --- якорь-Link-retailer1

retailerName2 ---------- ---------- Информация анкер-Link-retailer2

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

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

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

UPDATE

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

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

ответ

1

Это не совсем понятно, что вы называете appropriate data в вашем вопросе, но не хватает розничный идентификатор? Для этого вам не нужен javascript. При создании вашей ссылке, вы могли бы пройти по этому ритейлер ID:

@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 для отправки идентификатора розничного продавца в действие контроллера при нажатии ссылки. Для этого вам понадобится идентификатор продавца. Вы можете использовать HTML5 data- * атрибуты на якоре:

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

, а затем вы можете использовать JQuery, чтобы подписаться на событие нажатия всех этих связей и отправить запрос 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); 
} 
+0

Дерьмо !! может быть, я не объяснил это ясно .... Ссылка открывает новое окно с веб-сайтом ритейлера .... Я обновлю вопрос и покажу код для ссылки слишком ..... очень жаль обманчивости .. .. –

+0

@PankajUpadhyay, ОК, теперь это более понятно.Я обновил свой ответ на примере, который будет использовать запрос AJAX для вызова некоторого действия контроллера и передать ему идентификатор продавца, чтобы вы могли обновить базу данных. –

+0

спасибо за даррина, он решил проблему !! В будущем будет дважды проверяться вопрос. :-) –

Смежные вопросы