我再次问这个问题......因为我没有得到正确答案...... 我得到的答案是不正确的。
我正在开发MVC应用程序,我使用的是razor语法。我试图从下拉列表值中获取所选项目并将其传递给控制器方法。
但我收到了错误。
$("#btnForword").click(function(){
d = document.getElementById("HODList").value;
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;
});
我认为这一行的错误......
url2 = url2.replace("d",'@d');
问题已解决问题已解决
变量'D'中的问题是“D”中的问题。
当我在控制台窗口看到它时,我使用了Google Chrome的inspect element属性进行了检查.... 当我点击按钮时,我可以看到以下面形成的字符串
http://localhost:54255/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中的错误吗?
答案 0 :(得分:1)
您的变量d不是可以使用“@”调用的服务器变量,而是使用javascript设置的客户端变量,因此应该像用户一样:
$("#btnForword").click(function(){
d = document.getElementById("HODList").value;
var url2 = "@Html.Raw(Url.Action("SendPaymentAdviceForApproval", "PaymentAdvice", new { paymentAdviceId = Model.Id , nHOD = "d" }))";
url2 = url2.replace("d",d);
$.ajax({
url: url2, type: "POST", success: function (data) {
$("#btnForword").css("display","none");
}
});
return false;
});
(可以在Url.Action方法中直接调用“@ Model.Id”)。
答案 1 :(得分:0)
是的。问题是js替换函数用你的@d变量替换url2字符串中包含的每个“d”字符! 您需要将“d”标识符替换为在url字符串中不出现两次(或更多)的内容。此外,我认为如果你直接使用javascript而不是Razor助手创建url会更好。您可以在一行代码而不是三行中执行此操作。问候。