使用HTML onclick按钮调用C#函数

使用HTML onclick按钮调用C#函数,c#,html,razor-pages,buttonclick,C#,Html,Razor Pages,Buttonclick,我正在使用asp.net(C#)。我创建了一个razor页面,并希望使用html按钮单击调用C#中的函数。该函数执行类似于稳定婚姻问题的匹配算法。例如,当管理员单击按钮“Button1”时,必须调用C#中的函数matching(),该函数应执行函数中的语句,并最终返回匹配列表。我在表格中看到了一些通用答案,但我需要更具体的答案。提前谢谢 如前所述,这是一种匹配算法-使用单侧偏好执行双边匹配。 我已经尝试过html“Button1\u Click”解决方案。 这是非常通用的,不符合我的代码 这就是

我正在使用asp.net(C#)。我创建了一个razor页面,并希望使用html按钮单击调用C#中的函数。该函数执行类似于稳定婚姻问题的匹配算法。例如,当管理员单击按钮“Button1”时,必须调用C#中的函数matching(),该函数应执行函数中的语句,并最终返回匹配列表。我在表格中看到了一些通用答案,但我需要更具体的答案。提前谢谢

如前所述,这是一种匹配算法-使用单侧偏好执行双边匹配。 我已经尝试过html“Button1\u Click”解决方案。 这是非常通用的,不符合我的代码

这就是我到目前为止所做的:

html代码:


按钮1

无论你想做什么,都可以用ajax来完成,因为简单的按钮点击不会与razor和MVC一起工作。所以打个ajax电话,我建议你使用更简单的ajax.BeginForm


看看他的文章。Ajax基本上允许您在Ajax响应返回时访问on success方法,这样您就可以在OnSuccess方法中访问控制器返回的结果。

您可以调用一个方法,在其中检查角色并重定向另一个操作,或者只调用私有方法

public ActionResult OnGet()
{
     if (NTUser.Role != Role.Admin)
     {
        return RedirectToPage("/Denied");
     }
     else
     {
        return RedirectToAction(Matching);
     }
      ...other if with return
}

public ActionResult Matching()
{
   //dosomething
}
查看

如果你需要post,那么就使用它

@using (Html.BeginForm("OnGet", "YourControllerName", FormMethod.Post))
{
    <button type="submit" id="cmdAction" runat="server">
        Match and Show the result
    </button>
}
不要忘记添加属性
[HttpPost]
[HttpGet]
(获取只是为了更好的可读性代码)

尝试以下操作:

<a href="@Url.Action("OnGet", "ControllerName"> Display Text</a>

有很多方法可以做到这一点,因为您提到过razor页面,所以我建议您仔细阅读一下

只需像这样使用razor语法

@using (Html.BeginForm("ActionName", "ControllerName", FormMethod.Post)) { 
   <input type="submit" value="Match" />
}
@使用(Html.BeginForm(“ActionName”、“ControllerName”、FormMethod.Post)){
}

对我来说,你的代码看起来不错。有例外吗?您是否使用
razor
syntex或纯html调用
控制器上的
操作
?更新
视图
的代码会更有帮助。在我看来,您将Web表单(
runat=“server”
)与Razor页面混淆了。它们是两个不同且不兼容的框架。如果您使用的是Razor页面,并且希望确定单击了哪个按钮,请使用命名处理程序:我不会试图找出单击了哪个按钮。我想在客户端单击按钮时调用服务器端的C#函数。这是在C#端。但是它将如何连接到html端的按钮呢?另外,我已经编辑了我的问题。因此,如果您对此有任何建议,我们非常欢迎。您能更详细地介绍一下吗?
@using (Html.BeginForm("ActionName", "ControllerName", FormMethod.Post)) { 
   <input type="submit" value="Match" />
}