我有一个奇怪的问题。 我的产品详细信息视图中有一个链接,该链接必须导航到“购买”页面。
如果我使用此链接,它会导航到所需的页面
<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页面,保留在详细信息页面上。 这是我的控制者:
正如我所说,如果我使用此链接,它会导航到PurchaseProduct页面。
你知道我做错了什么吗?什么可以导致这种奇怪的行为?
答案 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>
}