Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何在MVC中将选定的下拉值传递给URL?_Asp.net Mvc_Asp.net Mvc 3 - Fatal编程技术网

Asp.net mvc 如何在MVC中将选定的下拉值传递给URL?

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

我正在开发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("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的数据属性。