[英]Problem using form runat=server with master pages?
I have a master page with two ContentPlaceHolders
. 我有一个包含两个ContentPlaceHolders
的母版页。
I have a default page.aspx which uses this master page. 我有一个默认的page.aspx,它使用此母版页。
In the default page one ContentHolder
has a TreeView
and the other has a GridView
. 在默认页面中,一个ContentHolder
具有TreeView
,另一个具有GridView
。
Now i need to display both of them together and both require <form runat="server">
. 现在,我需要将它们一起显示,并且都需要<form runat="server">
。
But the issue is that i cant have two instances of <form runat="server">
in a single page. 但是问题是我不能在单个页面中有两个<form runat="server">
实例。
I tried putting <form runat="server">
on the master page but then the TreeView
and GridView
functionality stops working..... 我尝试将<form runat="server">
放在母版页上,但是TreeView
和GridView
功能停止工作.....
Please help me as to what can i do to solve this. 请帮我解决该怎么办。
Page File: 页面文件:
<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="GridViewPg1.aspx.cs" Inherits="GridViewPg1" %>
<%@ Register assembly="obout_Grid_NET" namespace="Obout.Grid" tagprefix="cc1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<form id="form1" runat="server">
<asp:Panel ID="Panel1" runat="server" ScrollBars="Vertical">
<a style="color: #000000; font-weight: bold;">SumooHServer</a>
<p> <asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:SumooHAgentDBConnectionString %>"
SelectCommand="SELECT DISTINCT [MachineGroupName], [MachineGroupID] FROM [MachineGroups]">
</asp:SqlDataSource>
<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:SumooHAgentDBConnectionString %>"
SelectCommand="SELECT DISTINCT [PolicyID], [PolicyName] FROM [Policies]">
</asp:SqlDataSource>
<asp:TreeView ID="TreeView2" runat="server"
ontreenodepopulate="TreeView2_TreeNodePopulate">
<Nodes>
<asp:TreeNode NavigateUrl="~/GridViewPg1.aspx" PopulateOnDemand="True"
Text="Machine Group" Value="Machine Group"></asp:TreeNode>
</Nodes>
</asp:TreeView>
<asp:TreeView ID="TreeView3" runat="server"
ontreenodepopulate="TreeView3_TreeNodePopulate">
<Nodes>
<asp:TreeNode PopulateOnDemand="True" Text="Policies" Value="Policies">
</asp:TreeNode>
</Nodes>
</asp:TreeView>
</p></asp:Panel>
</form>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder2" Runat="Server">
<asp:Panel ID="Panel2" runat="server" ScrollBars="None" Width="100%">
<cc1:Grid ID="Grid1" runat="server" AllowFiltering="True"
AllowGrouping="True" DataSourceID="SqlDataSource3">
</cc1:Grid>
<asp:SqlDataSource ID="SqlDataSource3" runat="server"
ConnectionString="<%$ ConnectionStrings:SumooHAgentDBConnectionString %>"
SelectCommand="SELECT * FROM [MachineGroups]"></asp:SqlDataSource>
</asp:Panel>
</asp:Content>
Masterpage file: 母版文件:
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>SumooH</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<div id="wrapper">
<div id="header"
style="border-bottom-style: solid; border-bottom-color: #0000FF; border-bottom-width: medium">
</div>
<div id="left-content"
style="border-right: thin ridge #000000; top: 104px;">
<asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
<div id="content-wrapper">
<div id="content-inner">
<asp:ContentPlaceHolder id="ContentPlaceHolder2" runat="server">
</asp:ContentPlaceHolder>
</div>
<div id="footer">
<p> </p>
</div>
</div>
</div>
</body>
</html>
You say that the TreeView and GridView functionality "stops working" when the <form runat="server">
is in the master page -- but if doing two forms (one in the master, one in the page using the master) doesn't work, then technically it's not working either way. 您说,当<form runat="server">
位于母版页中时,TreeView和GridView功能“停止工作”,但是如果执行两种形式(一种在母版中,一种在使用母版的页中)则不会”不能正常工作,那么从技术上讲这两种方法都不可行。
The correct idiom for ASP.NET 2.0+ using master pages is to place the form tag in the master page. 使用母版页的ASP.NET 2.0+的正确用法是将表单标记放置在母版页中。 The pages using the master, if wired up correctly, will not need form tags -- they will get the tag from their master. 如果使用正确的主页面,则使用母版的页面将不需要表单标签-它们将从其母版获取标签。 The web app I just deployed this morning worked that way. 今天早上我刚刚部署的Web应用程序就是这样工作的。 :) :)
I'm guessing that there's actually a code issue buried in the page itself causing the TreeView and GridView to not function once the form tags are implemented correctly. 我猜想页面本身中实际上埋藏着一个代码问题,导致表单标签正确实现后,TreeView和GridView无法正常工作。
EDIT 编辑
To be clear, the master page must have <form runat="server">
, all of the other controls & HTML needed, the placeholders, and a closing </form>
tag. 为了清楚起见,母版页必须具有<form runat="server">
,所需的所有其他控件和HTML,占位符和结束</form>
标记。
The pages using the master cannot have any <form runat="server">
tags at all, and especially not a closing </form>
tag. 使用母版的页面根本没有任何<form runat="server">
标记,尤其是没有</form>
标记。
Done this way, there should be no problems. 这样做,应该没有问题。
Your master page should contain the form element, with the closing element at the bottom of it. 您的母版页应包含form元素,并在其底部带有close元素。
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>SumooH</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server" />
</div>
<div>
<asp:ContentPlaceHolder id="ContentPlaceHolder2" runat="server" />
</div>
</form>
</body>
Your content pages should not contain any form elements for your purposes. 您的内容页面不应包含任何表单元素。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.