我想從ASP.Net MVC中的JavaScript變量分配一個C#變量。但是我得到「CS1002:;預計」錯誤。c#變量分配從JavaScript變量錯誤(CS1002 :;預計)
function openEditJoining(joining_id) {
@{
int joiningId = @:joining_id ;
}
}
我想從ASP.Net MVC中的JavaScript變量分配一個C#變量。但是我得到「CS1002:;預計」錯誤。c#變量分配從JavaScript變量錯誤(CS1002 :;預計)
function openEditJoining(joining_id) {
@{
int joiningId = @:joining_id ;
}
}
C#和JS都在不同的地方進行處理,所以你不能一個變量直接從JS分配到C#
其他選項:
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
。或者,您可以在請求正文中發送數據(例如,使用POST
或PUT
)。 希望有所幫助。
爲什麼不從隱藏字段獲取該值?像 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>
你不能因爲C#代碼在服務器的JavaScript代碼(瀏覽器)之前執行 – Shyju
謝謝你的信息。 –