2017-02-28 5 views
0

私は奇妙な問題があります。 商品の詳細ビューに購入ページに移動するリンクがあります。Javascriptコードで目的のコントローラに移動できないMVC

私はそれが目的のページ

<a href="@Url.Action("PurchaseProduct", "Purchase", new { id = Model.ID, name = Model.Name})" id="link"> 
    Buy 
</a> 

に移動し、このリンクを使用しかし、私は量の情報を必要とするので、私は、パラメータとしてコントローラに数量を送信するためにはJavaScriptを経てこれを解決しなければならないとしたら

私は多くの方法で試してみました:

<a href="#" id="link" onclick="return test();"> 
    Buy 
    </a> 
<a href="javascript:test();">More >>></a> 

そして、これは私のjavascriptのコードです:

<script> 
function test() { 
    var UrlSettings = { 
     url: '@Url.Action("PurchaseProduct", "Purchase")' 
    } 
    var selectedId = @Model.ID; 
    var selectedName = $('#name').val(); 
    var quantity = $('#quantity').val(); 

$.ajax({ 
    url: UrlSettings.url, 
    data: { 'id' : selectedId, 'name' : selectedName, 'quantity' : quantity }, 
    type: "post", 
    cache: false, 
    success: function (savingStatus) { 
     // $("#hdnOrigComments").val($('#txtComments').val()); 
     // $('#lblCommentsNotification').text(savingStatus); 
    }, 
    error: function (xhr, ajaxOptions, thrownError) { 
     //$('#lblCommentsNotification').text("Error encountered while saving the comments."); 
    } 
    }); 
}; 
</script> 

このJavaScriptコードではコントローラーメソッドに入力しますが、奇妙なことは何もしません。 PurcahseProductページには行かず、詳細ページに留まります。 これは私のコントローラです:

enter image description here 私はこのリンクを使用すると、PurchaseProductページに移動します。

私は何が間違っていると思いますか?この奇妙な行動を引き起こす原因は何ですか?

+0

せずにデータを提出するよう、適切なフォームを使用するか、あなたは、フレームワークのいくつかの並べ替えを使用していますか?あなたのリンクの中の「@」記号は何ですか? –

+0

フォームを使用して数量値をコントローラに転記してみませんか? –

答えて

1

ajaxを使用してサーバーにデータを送信するため、これは記述方法と同じです。だから、あなたは$のajax.successコールバックで目的のページに手動でリダイレクトするか、AJAX

@Html.BeginForm("PurchaseProduct", "Purchase", new { id = Model.ID, name = Model.Name }) 
{ 
    @Html.DropDownListFor(m => m.Name) 
    @Html.TextBoxFor(m => m.Quantity) 

    <button type="submit">submit</button> 
} 
+0

最後に、あなたが示唆したように、これをうまくやっています。ありがとう – Orsi

関連する問題