1

我想创建一个包含所有脚本链接图标的基类页面,到目前为止我有这个

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;
        }
    }
}

但是在初始化时,它会抛出一个错误,即Unexpected end of file looking for </form>tag。

我将 and 分开upperBody()lowerBody()以便在创建页面时Home.aspx将 and 的内容添加到 and 之间upperBody()lowerBody()

请提供任何帮助。

4

2 回答 2

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>
于 2013-09-12T01:59:07.393 回答
1

尝试这个:

Page.Header.Controls.Add(Tag("script", _sb.ToString(),
                 new PnAAttribute("type", "text/javascript")));
于 2013-10-01T01:03:53.207 回答