MVC WebForms 控件和事件

MVC WebForms Controls and Events

您好,

我知道 razor 与 webforms 不同,但我也不想混合太多。

我创建了 ASP.NET MVC WebForms with Masterpages 包括 Pages 和 UserControls。它工作正常,但我想知道如何处理 MVC Webforms 中的点击事件?

代码隐藏文件仍然存在,例如 default.aspx.cs,如果我可以双击按钮然后它会创建点击事件但不工作。

我们可以在 MVC 中使用 asp.net 组件吗?代码隐藏文件呢?

(示例控件:asp:label、asp:textbox、asp:hyperlink 等)

谢谢,

更新

这是示例代码(contact.aspx):

<div class="contact_text">
            <asp:Label ID="lbl_namesurname" runat="server" Text="<%$ Resources:contact, lbl_namesurname.Text%>"></asp:Label>
        </div>
        <div class="txt_namesurname">
            <asp:TextBox ID="txt_namesurname" runat="server" ValidationGroup="contact"></asp:TextBox>
</div>
<div><asp:Button ID="btn_send" runat="server"  CssClass="btn_send" Text="<%$ Resources:contact, btn_send.ToolTip%>" ToolTip="<%$ Resources:contact, btn_send.ToolTip%>" OnClick="btn_send_Click" ValidationGroup="contact"/></div> 

contact.aspx.cs 文件:

public partial class contact : ViewPage
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void btn_send_Click(object sender, EventArgs e)
    {
       //old code-behind is not working in mvc
    }
}

}

没有 MVC Web 窗体这样的东西。有 ASP.NET MVC 和 ASP.NET Web 窗体。不同的技术,您不能混合使用它们(尽管它们可以并排放置)。

MVC 没有与 Web 窗体相同的生命周期,因此您不能有代码隐藏或用户控件。必须以不同的方式考虑 MVC:请求被路由到控制器。控制器检查请求,对它需要的数据检索层进行任何调用,选择一个视图,并将任何必要的数据传递给该视图,该视图将呈现给 HTML 并发送给客户端。除非您使用 AJAX 或类似技术,否则后续通信将经历相同的过程。

所以,想想那个按钮会做什么。它应该发送电子邮件吗?那么它应该是一个表单提交。是否应该收集更多数据并更新已加载页面上的 DOM?那么AJAX可能更合适。