2017-01-20 11 views
1

<td>文字列の値をコントローラのclick onに渡そうとしています。 これは私のJS関数です:コントローラに正しく値が渡されない

function postCardNumber(elm) {     
    var CardNumber = $(elm).closest("tr").find(".card-number").html(); 
    alert(CardNumber); //Check, goes ok, display the correct <td> value number 
    $.post("/CreditCard/ShowImage", CardNumber, function (response) {  
     alert(response); //the controller response is VB value "Nothing". Cant understand why? 
    }); 
} 

コントローラー:

enter image description here

Dibbuging値 "何も":

enter image description here

+0

'$(elm).closest(" tr ")に置き換えてください(" card-number ")html()、' {cardNumber:$(elm).closest( "tr")}で検索します。 ( ".card-number").html()}、 –

+0

コントローラの値:[link](https://s23.postimg.org/7t5g5dimz/nothing.png) –

答えて

1

あなたのアクションメソッドのパラメータ名はcardNumberです。したがって、データを送信するときには、そのキーで値を送信して、値がアクションメソッドのパラメータ変数に正しくマップされるようにします。

var cardNumber = $(elm).closest("tr").find(".card-number").html(); 
$.post("/CreditCard/ShowImage", { cardNumber :cardNumber }, function (response) { 
    //to do : Do something with response 
}); 

このコードは、あなたのために働くことかもしれませんが、私は強くあなたは、単にhtml()方法returns.html方法は、あなたがこの明日に子のスパンを追加した場合element.SoのHTMLマークアップを返すことが何であるかを送信していません示唆、あなたは戻ってあなたのコードを修正する必要があります!

単にcardNumber(文字列値)を送信する場合は、html 5属性を使用してdiv内に保持し、その値を読み取り、送信します。

<div data-cardnumber="myCard number" class="card-number"> 
    <p>I can have any markup here</p> 
</div> 

は今

var cardNumber = someSelectorHere.find(".card-number").data("cardnumber"); 

は、あなたのfind(".card-number")が一つだけのアイテムの配列を返すと仮定すると、クライアント側のコードでこれを読んでいます。

また、常に適切なデータ型を使用することをお勧めします。数値を渡す場合は、メソッドパラメータとして数値型(int/long)を使用して、後で不必要な変換を避けてください。

+0

これで、コントローラー:[link](https://s23.postimg.org/7t5g5dimz/nothing.png) –

0

Ajax-Requestでパラメータの名前が見つかりませんでした。

$.post("/CreditCard/ShowImage", $(elm).closest("tr").find(".card-number").html(), function (response) { 

たぶんそのもではなく通常の場合のようなURLパラメータとして、それはPOSTボディ内のIDを見つけることができるというASP.NETを伝えるために[FromBody]属性を使用するために必要な

var postBody = { 
    cardNumber: $(elm).closest("tr").find(".card-number").html() 
}; 
$.post("/CreditCard/ShowImage", { cardNumber: cardNumber }, function (response) { 

にを変更。 https://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-apiの2番目の段落に記載されている方法を参照してください。

関連する問題