是否可以像这样在 Razor 页面中调用模型函数(该函数永远不会被命中):
<input id="btnWork" type="submit" value="Work" onclick="writeLog("add to log");" />
但是,我的 razor 页面中有这个,它仅在页面加载时触发该功能:
{
<script>
function writeLog(msg)
{
@IndexModel.logHolder.Add("testing 123");
}
</script>
}
最佳答案
不,您不能直接从 JavaScript 调用服务器端方法。您可以做的是使用 JavaScript 向调用服务器端方法的页面处理程序方法发出 HTTP 请求。通常,您会 use a named handler method for this
将一个简单的命名处理程序添加到您的 PageModel 以响应 GET 请求并将字符串作为参数。处理程序的名称是 Add,即没有 OnGet
、OnPost
部分的方法名称:
public void OnGetAdd(string msg)
{
// processing goes here
}
然后将以下内容添加到您的 Razor 页面本身:
<input id="btnWork" type="submit" value="Work" onclick="writeLog('add to log');" />
@section scripts{
<script>
function writeLog(msg){
fetch(`?handler=Add&msg=${msg}`);
}
</script>
}
这使用了 Fetch API发出 HTTP 请求,在查询字符串中指定处理程序以及 msg
参数。当您单击该按钮时,您应该看到处理程序方法上的断点已命中,并且 msg 参数是您在 onclick 事件中指定的任何内容,即本例中的“添加到日志”。
关于asp.net-core - 从 razor 页面中的 javascript 调用模型函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71680811/