无法在mvc4 actionlink中点击和发送参数

Unable to click and send parameters in mvc4 actionlink

我正在创建 link 一个按钮,当用户单击 link 按钮时,我将调用局部视图。我想单击 Actionlink 按钮的事件并在 actionlink 中发送参数,但我遇到了问题。我无法发送参数和点击事件。我正在使用 class 选择器进行点击,如下所示。 这是我的操作link按钮。

@foreach (var group in Model.records)
 {
  <tr>
  <td>@Html.ActionLink(@group.clientId.ToString(),"",new { @clientId =@group.clientId.ToString(),@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);
                    }
                });
            });

目前当我点击 link 下面的操作时 url 将出现在浏览器中。 谁能建议我哪里出错了?提前致谢。

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

因为您将 路由值对象 html 属性对象 混合到单个对象并将其传递给方法作为单个参数。您当前的通话符合以下超载

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

因此您的单个对象将转到 routeValues 参数,并且您正在为第四个参数传递 null(htmlAttributes)

将 html 属性作为单独的参数传递。您还可以指定要为 ajax 调用的 url 作为 link href.Here 我正在使用另一个重载,其中我指定了操作名称和控制器名称与路由值。

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

这将生成具有 href 值的 link,例如 "/DocumentVerification/DetailsByClientId?clientId=25" 和 css class delete

现在,由于 clientId 在查询字符串中,您可以简单地使用单击项目的 url(href 值)进行 ajax 调用。

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

您的 ActionLink() 错误,您将 class 名称添加为路由值。但是没有必要使用 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 });
});