Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.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
C# C:如何在Javascript中使用全局变量_C#_Javascript_Asp.net_Asp.net Mvc - Fatal编程技术网

C# C:如何在Javascript中使用全局变量

C# C:如何在Javascript中使用全局变量,c#,javascript,asp.net,asp.net-mvc,C#,Javascript,Asp.net,Asp.net Mvc,各位!! 我正在学习ASP.NETMVC,有一些问题。 我的问题是将数据从视图传递到控制器 这是我的代码: @{ string listID = ""; } 我尝试使用这个变量: function SubmitDelete() { var listId = ""; var x = document.getElementsByName("IsCheck"); for (var i = 0; i < x.length; i++) { if

各位!! 我正在学习ASP.NETMVC,有一些问题。 我的问题是将数据从视图传递到控制器

这是我的代码:

@{
    string listID = "";
}
我尝试使用这个变量:

function SubmitDelete() {
   var listId = "";        
   var x = document.getElementsByName("IsCheck");
   for (var i = 0; i < x.length; i++) {
     if (x[i].checked == true) {
        listId += x[i].value + ", ";
     };
   }
   @listID = listId;
   return listId;
}
这是一个关于复选框多次删除的简单问题。
请帮帮我。

您不能将javascript变量传递给控制器

但您可以在隐藏字段的帮助下将其作为部分表单数据发布

最好添加一个隐藏字段,并在Javascript和post中设置它

@using (Html.BeginForm("DeleteChecked", "Category", FormMethod.Post)){ 

 Html.HiddenFieldFor(m=>m.MyList, new {@id="my-list-data"})

 ..other controls and your submit button

}
在Javascript中

function SubmitDelete() {
   var listId = "";        
   var x = document.getElementsByName("IsCheck");
   for (var i = 0; i < x.length; i++) {
     if (x[i].checked == true) {
        listId += x[i].value + ", ";
     };
   }
   $('#my-list-data').val(listId);

}
你不能那样做。 aspx\ascx\cshtml等页面是在服务器端构建的,而js是在客户端计算的。 您可以将C字符串添加到js函数中,但当它们到达客户端时,它们将被硬编码。 所有的C表达式在到达客户端和计算js之前都会被计算

下面是一个例子: 这是您在aspx\ascx\cshtml文件中看到的内容

<%
string str = 'test';
%>
function jsFunc(){
var myVar = '<%=str%>';
}

我认为您需要了解客户端代码和服务器端代码之间的区别,以及每种代码在什么时候运行。您的问题没有什么意义。您可以使用隐藏字段,然后使用document.getElementByIdHiddenFieldId在SubmitDelete中选择,并将其值设置为listId。然后你可以在你的控制器中传递隐藏字段的值。你为什么还要传递空的listID字符串作为路由参数?@AntP,我没有注意到。现在更新。谢谢你的回答。但是m=>m.MyList中的MyList是什么呢。我使用IList进行Model@BaTrinh,请使用模型详细信息添加控制器操作方法。在回答中:Html.HiddenFieldForm=>m.MyList,new{@id=my list data}。第2个参数是htmlatitbutes。确切地说,我在这个位置上增加了价值:easest是。然后,这个HiddenField将从JS选项卡获取值。我的问题解决了。非常感谢你
<%
string str = 'test';
%>
function jsFunc(){
var myVar = '<%=str%>';
}
function jsFunc(){
var myVar = 'test';
}