2

私は MVC アプリケーションを開発しており、かみそりの構文を使用しています。選択した項目をドロップダウン リストの値から取得し、それをコントローラー メソッドに渡そうとしています。

しかし、私はエラーが発生しています。

The name 'd' does not exist in the current context

更新されたコードは...

   $("#btnForword").click(function(){
    d = $('#HODList').val()
    alert(d);

    var url2 = "@Html.Raw(Url.Action("SendPaymentAdviceForApproval", "PaymentAdvice", new { paymentAdviceId = "idValue" , nHOD = "@@D@@" }))"
    url2 = url2.replace("idValue",'@Model.Id');
    url2 = url2.replace("@@D@@",d);

    $.ajax({
        url: url2, type: "POST", success: function (data) {
            $("#btnForword").css("display","none");

        }
    });
    return false;
});

問題が解決しました 問題が解決しました

変数「D」の問題は「D」にあります。

コンソールウィンドウで見たとき、Google chromeのinspect要素プロパティを使用して確認しました... ボタンをクリックすると、次のように形成された文字列が表示されます

ht...../PaymentAdvice/SendPaymentAdviceForApproval?paymentAdviceId=304&nHO8=D

jquery-1.7.1.min.js:4

上記のリンクの最後の文字を参照してください。「=D」として来るべきではありませんね。

私は以下のコードを使用しました...そしてそれは完全に機能します。

$("#btnForword").click(function(){

            var url2 = "@Html.Raw(Url.Action("SendPaymentAdviceForApproval", "PaymentAdvice", new { paymentAdviceId = "idValue" , nHOD = "HODId" }))";
            url2 = url2.replace("idValue",'@Model.Id');
            url2 = url2.replace("HODId",$('#HODList').val());


            $.ajax({
                url: url2, type: "POST", success: function (data) {
                    $("#btnForword").css("display","none");

                }
            });
            return false;
        });

これは Jquery のバグですか?

4

2 に答える 2

0

これを試して

$(function(){

$("#btnForword").click(function(){
    var d =  $('#HODList').val();

    var url2 = "@Html.Raw(Url.Action("SendPaymentAdviceForApproval", "PaymentAdvice", new { paymentAdviceId = "idValue" , nHOD = "@@D@@" }))";
    url2 = url2.replace("idValue",'@Model.Id');
    url2 = url2.replace("@@D@@",d);

    $.ajax({
        url: url2, type: "POST", success: function (data) {
            $("#btnForword").css("display","none");

        }
    });
    return false;
   });
});

URL の他の部分にも影響するため、「d」を置き換えることを検討しないでください。代わりに、特定のプレースホルダーを試してください。これがうまくいかない場合は... それでは、アクションメソッドのシグネチャも表示していただけますか?

コントローラーのアクションは次のようになります

[HttpPost]
public JsonResult SendPaymentAdviceForApproval(int paymentAdviceId, int nHOD)
{
   // Your existing logic here... 
}

乾杯

于 2013-05-27T09:00:58.113 に答える
0

controller-action にパラメーターを渡すには、dataプロパティを使用する必要があります。$.ajax

$("#btnForword").click(function(){
    var d =  document.getElementById("HODList").value;

    // define url
    var url2 = 'Url.Action("SendPaymentAdviceForApproval", "PaymentAdvice")';
    //url2 = url2.replace("idValue",'@Model.Id');
    //url2 = url2.replace("d",'@d');

    $.ajax({
        url: url2, 
        type: "POST", 
        // add parameters in here...
        data: { paymentAdviceId : @Model.Id, nHOD : d }
        success: function (data) {
            $("#btnForword").css("display","none");
        }
    });

    return false;
});

コントローラーは次のようになります。

public ActionResult SendPaymentAdviceForApproval(int paymentAdviceId, int nHOD){...}
于 2013-05-27T09:02:16.883 に答える