【问题标题】:How to setup button click for Razor page?如何设置 Razor 页面的按钮单击?
【发布时间】:2019-08-26 07:21:53
【问题描述】:

我的网页上有多个按钮,下面是 cshtml 中的示例:

home.cshtml

<Button runat="server" id="Search_Click" OnClick="btnLogin_Click" >try</Button>

以下是Home.cshtml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using System.Web;
namespace WebApplication2.Pages
{
    public class IndexModel : PageModel
    {
        public void OnGet()
        { }
        public IActionResult btnLogin_Click(object sender, EventArgs e)
        { return Redirect("/Login");}
    }
}

但是这里的按钮根本不起作用,有人对此有想法吗?

【问题讨论】:

  • 您似乎正在尝试在 webforms 和 aspnet-mvc 之间混合概念。 MVC 没有runat="server" 的概念。除非它是链接或表单提交,否则您需要使用 javascript 与按钮交互。
  • 您是否尝试将 Razor 页面和 Web 表单框架混合在一起?

标签: c# asp.net-core razor-pages


【解决方案1】:

Razor Pages 不仅仅是 Web 表单,因为这两种技术非常不同。 确实,从文件组织的角度来看,您肯定可以看到一些相似之处。毕竟,无论是在 Razor 页面还是 Web 表单中,我们都将重点放在背后有一些代码的页面上。但是,他们实现实际网站的方式完全不同。

为了清楚起见,我不同意 Web 表单是一种糟糕的技术或设计糟糕的想法。在当时,Web 表单在快速应用程序开发方面向前迈出了一大步。此外,它的模型试图抽象出 HTTP 的所有细微差别,并提供与以前在 Windows 窗体中看到的非常相似的开发体验。

无论如何,Razor Pages 与 ASP.NET Web 窗体有很大不同。首先,在 Razor Pages 中,没有任何 HTTP 抽象。实际上,您在这些页面模型文件中看到的不是 HTML 页面的“代码背后”,您看到的是框架调用以处理请求的各种 HTTP 动词特定的操作方法。您将看到像 OnGetOnPost 这样的方法,而不是 Button_OnClickDropDownList1_OnSelect。与 MVC 非常相似,您还可以访问有助于处理请求的完整 Request、Response 和 HttpContext 对象。此外,WebFroms 中的主要痛点:回发和 ViewState,无处可寻。相反,一切都是无状态的,您可以 100% 控制服务器和客户端之间发生的消息传递。详情请参考here

我建议你可以花点时间学习the official tutorial on Razor pages

【讨论】:

    猜你喜欢
    • 2019-08-06
    • 2014-03-16
    • 2021-06-01
    • 1970-01-01
    • 2018-05-07
    • 1970-01-01
    • 2021-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多