gpt4 book ai didi

c# - 我需要在同一页上有两个 runat ="server"

转载 作者:太空宇宙 更新时间:2023-11-03 21:02:31 24 4
gpt4 key购买 nike

我是 C# 的新手,我发现当时一个页面上只能有 1 个 runat="server"。我的母版页中有 1 个,登录页面中有 1 个。

我需要它们都工作,因为我的母版页中有一些 asp 按钮,我需要使用 masterpage.master.cs 进行编辑。

我的登录页面也需要它来检查用户名和密码字段是否与数据库中的数据相同。

如果我将它们中的任何一个从 runat="server" 中删除为常规形式,则在后端代码页中找不到按钮和字段的 asp ID。以及表格将无法提交。 (错误 500)

我是 .net 和 C# 的新手,想知道是否有另一种方法可以使用后端代码文件 (*.aspx.cs) 中的 ID 或使用多个 runat="server" froms(有变通办法之类的)?提前致谢!

最佳答案

有一种方法可以做到这一点,但是一次 formvisible。不可能可见同时具有runta="server"form。只需在 Master Page 中添加一个 ContentPlaceHolder 即可在 Child Page 中使用 form。然后用两个Panel来取两个form。之后,为母版页的形式设置 visibility false,为 Child Page 的形式设置 visibility true。请检查以下内容。

母版页 ASPX:

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="WebApplication2.SiteMaster" %>

<!DOCTYPE html>

<html lang="en">
<head runat="server">
</head>
<body>
<asp:Panel ID="Panel1" runat="server">
<form runat="server">
<h1>Master Page Form</h1>
<asp:ScriptManager runat="server">

</asp:ScriptManager>


<div class="container body-content">
<asp:ContentPlaceHolder ID="MainContent" runat="server">
</asp:ContentPlaceHolder>
<hr />
<footer>
<p>&copy; <%: DateTime.Now.Year %> - My ASP.NET Application</p>
</footer>
</div>
</form>
</asp:Panel>
<asp:ContentPlaceHolder ID="login" runat="server">
</asp:ContentPlaceHolder>
</body>
</html>

子页面 ASPX:

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="WebApplication2.WebForm2" %>

<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="login" runat="server">
<asp:Panel ID="Panel2" runat="server">
<form runat="server" id="loginform">
<h1>Child Page Form</h1>
</form>
</asp:Panel>
</asp:Content>

子页面 CS:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication2
{
public partial class WebForm2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Panel panel1 = (Panel)Master.FindControl("Panel1");
panel1.Visible = false;
}
}
}

关于c# - 我需要在同一页上有两个 runat ="server",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43978716/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com