asp.net-core - 从 razor 页面中的 javascript 调用模型函数

标签 asp.net-core razor razor-pages

是否可以像这样在 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,即没有 OnGetOnPost 部分的方法名称:

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/

相关文章:

c# - 如何在 ASP.NET MVC Razor 中有条件地显示字段?

c# - 如何在 Razor 页面 View 中显示角色列表?

c# - 如何在 asp.net Core Razor Pages 中填充复选框列表?

visual-studio-2015 - 从 ASP.NET Core 1.0 升级到 1.1 后,Tag Helper Intellisense 不工作

Asp.Net Core - 防止相同域应用程序之间的 session cookie 冲突

.net - 在 chromebook 上运行 .net core 应用程序

c# - 如何在 .NET Core Razor 页面中使用 foreach 循环对表数据进行分组?

asp.net-core - 从 appsettings.json 文件读取原始 URL 会导致错误请求

visual-studio - VS 2010 似乎没有与 Razor 相关联(没有突出显示或智能感知)

asp.net - POST URL 在 Razor 页面中缺少处理程序查询字符串