![](/img/trans.png)
[英]C# function called in javascript and it's execute before the page load. why?
[英]Execute C# code inside JavaScript function when it's called
每當我運行 JavaScript function 時,我都想執行一段 C# 代碼,但它的行為似乎不像我想要的那樣,這是一個例子:
假設我有一個變量property int Counter {get; set; }
property int Counter {get; set; }
在property int Counter {get; set; }
中,我想在每次運行 JavaScript function 時遞增:
<script type="text/javascript">
function MyFunction(){
//Do some stuff
@{Model.Counter++;}
}
</script>
真正發生的是,當頁面加載時@{Model.Counter++;}
正在執行,無論是否從 function 調用。
每當我再次運行 function 時,它都會完全忽略它。
這意味着這段代碼@{Model.Counter++;}
在頁面加載時執行一次,並且不再執行。
每次運行 function 時,如何解決並使其執行?
我不認為你想要什么是可能的(也許是 Blazor? - 但那是 WebAssembly)。 相反,您可以將新的 javascript 變量分配給您的 model 屬性。 例如:
<script type="text/javascript">
function MyFunction(){
//Do some stuff
let counter = @{Model.Counter};
counter++;
// Do some stuff with counter
}
// When you are done, post the counter back if needed on server side
</script>
您可以使用 ActiveX 控件來執行編譯程序。 但您應該知道您的 html 代碼僅適用於 IE。
您必須在視圖表單內的某處為 model.counter 創建一個隱藏字段
<input type="hidden" id="modelCounter" asp-for="Counter" value="@Model.Counter" />
在此之后,您可以使用 javascript 更改計數器
function MyFunction(){
//Do some stuff
var counter=$("#modelCounter").val();
counter++;
$("#modelCounter").val(counter);
}
嘗試這個
@{
var a=Model.Counter;
}
在腳本之外執行此操作
並在 function 或腳本中執行
@a++;
或者
var c = @a;
c++;
希望它有效
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.