Javascript代码没有带我到所需的控制器MVC

时间:2017-02-28 10:11:55

标签: javascript asp.net-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页面。

你知道我做错了什么吗?什么可以导致这种奇怪的行为?

1 个答案:

答案 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>
}