2016-08-30 10 views
0

リンクボタンを作成しています。ユーザがリンクボタンをクリックすると、部分ビューを呼び出しています。私はアクションリンクボタンのクリックイベントを持っていて、アクションリンクでパラメータを送信したいのですが、私は問題に直面しています。私はパラメータとクリックイベントを送信することができません。私は以下のようにクラスセレクタをクリックして使用しています。 これは私のアクションリンクボタンです。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); 
        } 
       }); 
      }); 

現在、以下のアクションリンクをクリックするとブラウザに表示されます。 誰かが私が間違っているところを私に示唆することはできますか?前もって感謝します。

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

答えて

0

あなたActionLink()は間違っている、あなたは、ルート値としてクラス名を追加します。しかし、ActionLink()を使用する必要はありません(そうした場合は、デフォルトのリダイレクトをキャンセルする必要があります)。また、あなたの方法でidパラメータは、イベントオブジェクト(ない値)である

変更しますHTML

$('.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); 
     } 
    }); 
}); 

以上単に

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

およびスクリプトへ

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()'を使ってのみ生成でき、 'DocumentVerificationController'の' Index() 'メソッドによって生成されたページがある場合のみ –

+0

どこでも上記のactionmethodとして与えられたインデックス。私はこれをもう一度見ます –

0

あなたはルート値がHTML属性は、単一のオブジェクトにオブジェクトと単一のパラメータとしてメソッドにそれを渡されたオブジェクトを混合するので。あなたの現在のコール(htmlAttributes)だからあなたの単一のオブジェクトがrouteValuesパラメータに行くと、あなたが第四のparamのためnullを渡している以下の過負荷

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

と一致

は、HTMLを渡し別々のパラメータとしての属性。また、ajax呼び出しのために呼び出すURLをリンクhrefとして指定することもできます。ここでは、別のオーバーロードを使用しています。ここでは、アクション名とコントローラ名をルート値と共に指定します。

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

これは"/DocumentVerification/DetailsByClientId?clientId=25"とcssクラスなどのhrefの値とのリンクを生成しますのclientIdは、クエリ文字列であるため、delete

は今、あなたは単にあなたのAjaxのためにクリックされたアイテムのURL(hrefの値)を使用することができますコール。

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

はいクリックイベントは機能していますが、パラメータ(clientId)を受け取ることができません –

+0

@NiranjanGodbole答えの更新を参照してください。 – Shyju

関連する問題