簡體   English   中英

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

[英]C#: How to using global variable with Javascript

大家! 我正在學習ASP.NET MVC,並且有一些問題。 我的問題是將數據從視圖傳遞到控制器。

這是我的代碼:

@{
    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;
}

完成后,我想將@listID傳遞給Controller:

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

這是關於帶有復選框的多刪除的簡單問題。 請幫幫我。

您無法將javascript變量傳遞給控制器​​。

但是您可以在隱藏字段的幫助下將其作為表單數據發布。

最好添加一個隱藏字段並將其設置為Javascript並發布

@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%>';
}

這是客戶得到的:

function jsFunc(){
var myVar = 'test';
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM