Asp.net mvc 如何在MVC中将选定的下拉值传递给URL?
我正在开发MVC应用程序,我正在使用razor语法。 我试图从下拉列表值中获取所选项目,并将其传递给控制器方法 但是我犯了一个错误Asp.net mvc 如何在MVC中将选定的下拉值传递给URL?,asp.net-mvc,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 3,我正在开发MVC应用程序,我正在使用razor语法。 我试图从下拉列表值中获取所选项目,并将其传递给控制器方法 但是我犯了一个错误 The name 'd' does not exist in the current context 更新的代码是 $("#btnForword").click(function(){ d = $('#HODList').val() alert(d); var url2 = "@Html.Raw(Url.Action("SendPa
The name 'd' does not exist in the current context
更新的代码是
$("#btnForword").click(function(){
d = $('#HODList').val()
alert(d);
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;
});
问题解决了问题解决了
变量“D”中的问题是“D”中的“是”
当我在控制台窗口中看到它时,我使用Google chrome的inspect元素属性进行了检查。。。。
当我点击按钮时,我可以看到下面的字符串
ht…./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中的一个bug吗 试试这个
$(function(){
$("#btnForword").click(function(){
var d = $('#HODList').val();
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;
});
});
不要考虑替换“D”,因为它也会影响你的URL的其他部分。请尝试使用特定的占位符。
如果这不起作用。。。那么你能不能也出示你行动方法的签名
您的控制器操作应该如下所示
[HttpPost]
public JsonResult SendPaymentAdviceForApproval(int paymentAdviceId, int nHOD)
{
// Your existing logic here...
}
干杯您应该使用
$.ajax的数据
属性将参数传递给控制器操作
$("#btnForword").click(function(){
var d = document.getElementById("HODList").value;
// define url
var url2 = 'Url.Action("SendPaymentAdviceForApproval", "PaymentAdvice")';
//url2 = url2.replace("idValue",'@Model.Id');
//url2 = url2.replace("d",'@d');
$.ajax({
url: url2,
type: "POST",
// add parameters in here...
data: { paymentAdviceId : @Model.Id, nHOD : d }
success: function (data) {
$("#btnForword").css("display","none");
}
});
return false;
});
您的控制器应该看起来:
public ActionResult SendPaymentAdviceForApproval(int paymentAdviceId, int nHOD){...}
您不能在服务器端代码中使用js变量…您只需更改语法,如d=document.getElementById(“HODList”).value;to var d=document.getElementById(“HODList”).value;可能这个帮助问题解决了,请检查更新的问题…我没有!!!!我使用的是占位符,而不是服务器端代码中的变量。请撤消您的否决票nHOD=“#D#”
这是什么?这必须是名为d
的选定项目值,一点也不,先生:)这是一个占位符,我正在使用它通过替换函数设置值。。。url2=url2。替换(“#D#”,D)@KD可以用D代替D?是的我们可以。。但最好使用一个更有意义的名称,而不是D=$(“#HODList”).val()var url2=“@Html.Raw(Url.Action(“SendPaymentAdviceForApproval”,我在这句话中需要做些什么?“PaymentAdvice”,new{paymentAdviceId=“idValue”,nHOD=“#D#“}”);url2=url2.replace(“idValue”,“@Model.Id”);url2=url2。替换(“#D#”,D)代码>要将下拉值传递给Ur.Action,这是不可能的。你不能d
是js变量,Url.Action
是服务器端代码。也不需要使用Html.raw您遇到了什么错误?请添加Html代码和控制器操作。生成url并重新指定其数据是使用ajax传递参数的最糟糕方法。您应该使用ajax的数据属性。