我想创建一个基类类页面,其中包含所有脚本,链接和图标,我到目前为止
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace VGD.Client
{
public class BasePage : Page
{
public new string Title { get; set; }
protected override void FrameworkInitialize()
{
Controls.Add(ParseControl("<!DOCTYPE html>"));
Controls.Add(ParseControl("<html lang='en'>"));
Controls.Add(ParseControl(head()));
Controls.Add(ParseControl(upperBody()));
base.FrameworkInitialize();
}
protected override void OnPreRender(EventArgs e)
{
Controls.Add(ParseControl(lowerBody()));
base.OnPreRender(e);
}
private string head()
{
string _retVal = @"<head id='Head1' runat='server'>
<title>" + Title + @"</title>
</head>";
return _retVal;
}
private string upperBody()
{
string _retVal = @"<body>
<form runat='server'>";
return _retVal;
}
private string lowerBody()
{
string _retVal = @"</form>
</body>
</html>";
return _retVal;
}
}
}
但是在初始化时,它会抛出错误文件的意外结尾寻找</form>
标记。
我将upperBody()
和lowerBody()
分开,以便在创建页面时Home.aspx
和upperBody()
之间添加lowerBody()
的内容。< / p>
请帮助。
答案 0 :(得分:1)
这是您在母版页存在之前必须执行的操作。
使用母版页,你仍然可以在代码隐藏中添加你想要的任何自定义逻辑,但仍然可以利用实际的HTML构建页面,而不必编写你所拥有的那些HTML代码片段。你的例子,像这样:
protected override void FrameworkInitialize()
{
Controls.Add(ParseControl("<!DOCTYPE html>"));
Controls.Add(ParseControl("<html lang='en'>"));
Controls.Add(ParseControl(head()));
Controls.Add(ParseControl(upperBody()));
base.FrameworkInitialize();
}
无需在这里重新发明轮子。
更新:
要存储母版页和任何内容页面可用的脚本,请使用以下命令:
<asp:ScriptManager runat="server">
<Scripts>
<%--To learn more about bundling scripts in ScriptManager see http://go.microsoft.com/fwlink/?LinkID=272931&clcid=0x409 --%>
<%--Framework Scripts--%>
<asp:ScriptReference Name="MsAjaxBundle" />
<asp:ScriptReference Name="jquery" />
<asp:ScriptReference Name="jquery.ui.combined" />
<asp:ScriptReference Name="WebForms.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebForms.js" />
<asp:ScriptReference Name="WebUIValidation.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebUIValidation.js" />
<asp:ScriptReference Name="MenuStandards.js" Assembly="System.Web" Path="~/Scripts/WebForms/MenuStandards.js" />
<asp:ScriptReference Name="GridView.js" Assembly="System.Web" Path="~/Scripts/WebForms/GridView.js" />
<asp:ScriptReference Name="DetailsView.js" Assembly="System.Web" Path="~/Scripts/WebForms/DetailsView.js" />
<asp:ScriptReference Name="TreeView.js" Assembly="System.Web" Path="~/Scripts/WebForms/TreeView.js" />
<asp:ScriptReference Name="WebParts.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebParts.js" />
<asp:ScriptReference Name="Focus.js" Assembly="System.Web" Path="~/Scripts/WebForms/Focus.js" />
<asp:ScriptReference Name="WebFormsBundle" />
<%--Site Scripts--%>
</Scripts>
</asp:ScriptManager>
答案 1 :(得分:1)
试试这个:
Page.Header.Controls.Add(Tag("script", _sb.ToString(),
new PnAAttribute("type", "text/javascript")));