无法在mvc4 actionlink

时间:2016-08-30 12:17:09

标签: jquery asp.net-mvc-4 razorengine

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

@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);
                    }
                });
            });

目前,当我点击url下面的actionlink将在浏览器中。 任何人都可以建议我哪里出错了?提前谢谢。

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

2 个答案:

答案 0 :(得分:0)

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

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

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

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

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

这将生成href值的链接,如"/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);                   
    });
});

答案 1 :(得分: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 });
});