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