2017-09-04 72 views

回答

0

C#和JS都在不同的地方進行處理,所以你不能一個變量直接從JS分配到C#

其他選項:

  • 商店變量在cookie的使用JS,如果訪問從C#
  • POST請求到服務器使用AJAX調用/表單提交等。
0

C#代碼是服務器端代碼,這意味着它在服務器上運行。 JavaScript代碼在瀏覽器中運行。

整個週期是這樣的:

請進來 - >所有的C#代碼被執行 - >渲染的結果發回

因此,這意味着,你可以做這樣的事情(裏面.cshtml):

function openEditJoining(joining_id) { 
    return @Model.JoiningId; 
} 

的C#代碼將首先運行,讓我們說,JoiningId = 56,返回的結果將被:

function openEditJoining(joining_id) { 
    return "56"; 
} 

這是完全有效的,因爲服務器端代碼首先執行。但是,你正在嘗試另一種方式,這是非法的。一旦結果返回給客戶端,它不是C#;它現在都是客戶端。

您可以做的是您可以使用查詢字符串或請求正文在請求中發送變量。例如。發送請求作爲localhost:49976/[controllerName]/joinings?id=56和控制器中,動作方法的簽名改爲:

public IActionResult Joinings(int id) { 
} 

現在,id參數將獲得在查詢字符串中發送的值。當然,只要查詢字符串和方法參數中定義的字符串相同,就可以命名爲id。或者,您可以在請求正文中發送數據(例如,使用POSTPUT)。 希望有所幫助。

0

爲什麼不從隱藏字段獲取該值?像 https://jsfiddle.net/Alan_van_Buuren/7kg99kh3/

<div class="container"> 
     <h3>Why don't get this value from a hidden field? like</h3> 
     <p>I see your question in: https://stackoverflow.com/questions/46040155/c-variable-assignment-from-javascript-variable-error-cs1002-expected</p> 
     <div> 
     <div class="form-group"> 
      <label>Your value :</label> 
      <input type="text" id="field" class="form-control" /> 
      <input type="hidden" id="yourFieldInModel" class="form-control" /> 
     </div> 
     <button class="btn btn-info">Send to model...</button> 
     </div> 
     <p id="valueHidden">The value is: </p> 
    </div> 

    <script> 
    //Method that assign your frontValue into a field in model  
    function getSome(valueFromModel) { 
     // TODO: anything 
     $('#yourFieldInModel').attr('value', valueFRomModel); 
    } 

    $(document).ready(function() { 
     $('#field').on('change', function() { 
     var thisValue = $(this).val(); 
     $('#valueHidden').text('The value is ' + thisValue); 
     getSome(thisValue); 
     }); 
    }); 
</script>