2016-08-30 4 views
0

Я создаю ссылку на одну кнопку, и когда пользователи нажимают кнопку ссылки, я вызываю частичный вид. Я хочу щелкнуть событие кнопки Actionlink и отправить параметры в actionlink, но я столкнулся с проблемами. Я не могу отправить параметры и щелкнуть событие. Я использую селектор классов для клика, как показано ниже. Это моя кнопка actionlink.Не удалось щелкнуть и отправить параметры в mvc4 actionlink

@foreach (var group in Model.records) 
{ 
    <tr> 
    <td>@Html.ActionLink(@group.clientId.ToString(),"",new { @clientId [email protected](),@class ="delete" },null)</td> 
    </tr> 
} 

Это мой код jquery.

$('.delete').click(function (id) { 
       alert(1); 
       $.ajax({ 
        type: 'POST', 
        dataType: 'html', 
        data: { clientId: id }, 
        url: '/DocumentVerification/detailsbyClientId', 
        success: function (data) { 
         $('#detailsbyclientId').html(""); 
         $('#detailsbyclientId').html(data); 
        } 
       }); 
      }); 

В настоящее время, когда я нажимаю на actionlink ниже, url будет находиться в браузере. Может ли кто-нибудь предложить мне, где я ошибаюсь? Заранее спасибо.

http://localhost:62777/DocumentVerification?clientId=1006&class=delete 

ответ

0

ActionLink() Ваш неправильно, и вы добавив имя класса в качестве значения маршрута. Но нет необходимости использовать ActionLink() (и если вы это сделаете, вам нужно отменить перенаправление по умолчанию). Кроме того, параметр id в методе является объект события (не значение)

Изменить вы HTML для

<a href="#" data-id="@group.clientId" class="delete">@group.clientId</a> 

и сценарий к

$('.delete').click(function (id) { 
    var id = $(this).data('id'); 
    $.ajax({ 
     type: 'POST', 
     dataType: 'html', 
     data: { clientId: id }, 
     url: '@Url.Action("detailsbyClientId", "DocumentVerification")', // don't hard code url's 
     success: function (data) { 
      // $('#detailsbyclientId').html(""); not required 
      $('#detailsbyclientId').html(data); 
     } 
    }); 
}); 

или более просто

var url = '@Url.Action("detailsbyClientId", "DocumentVerification")'; 
$('.delete').click(function (id) { 
    var id = $(this).data('id'); 
    $('#detailsbyclientId').load(url, { clientId: id }); 
}); 
+0

Когда я нажимаю кнопку ссылки, ничего не происходит, и это будет URL http: // localhost: 62777/DocumentVerification/Index # –

+0

Невозможно. Вы делаете что-то еще неправильно. ('href =" # "' не может сгенерировать этот URL-адрес, который может быть сгенерирован только с использованием текущего 'ActionLink()', и только если ваша страница была создана методом 'Index()' 'DocumentVerificationController' –

+0

Нигде i данный Индекс как actionmethod выше.Я снова посмотрю на это –

0

Поскольку вы смешан возражают значения маршрута и HTML атрибуты объекта к одному объекту и передал, что к методу в качестве единственного параметра. Ваш текущий вызов совпадает с приведенной ниже перегрузкой

public static MvcHtmlString ActionLink(
    this HtmlHelper htmlHelper, 
    string linkText, 
    string actionName, 
    object routeValues, 
    object htmlAttributes 
) 

Таким образом, ваш единственным объект будет перейти к параметру routeValues ​​и вы передаете null для четвертой пар (htmlAttributes)

Передайте HTML атрибутов в качестве отдельного параметра. Вы также можете указать URL-адрес, который хотите вызвать для вызова ajax, как ссылку href.Here я использую другую перегрузку, где я указываю имя действия и имя контроллера вместе с значениями маршрута.

@Html.ActionLink(group.clientId,"detailsByClientId","DocumentVerification" 
         ,new { clientId =group.clientId}, new {@class ="delete" }) 

Это сформирует связь с HREF значение, как "/DocumentVerification/DetailsByClientId?clientId=25" и класс CSS delete

Теперь, так как ClientId в строке запроса, вы можете просто использовать URL-Clicked элемента (HREF значение) для AJAX вызов.

$('.delete').click(function (e) { 
    e.preventDefault(); 
    $.post($(this).attr("href"),function(data){ 
     $('#detailsbyclientId').html(data);     
    }); 
}); 
+0

Да, теперь событие click работает, но я не могу получить параметр (clientId) –

+0

@NiranjanGodbole См. Обновление в ответ. – Shyju