首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ViewPage中向所有ViewPage插入某些脚本的最佳方法是什么?

在ViewPage中向所有ViewPage插入某些脚本的最佳方法是什么?
EN

Stack Overflow用户
提问于 2009-10-20 11:18:12
回答 2查看 150关注 0票数 0

我想在所有视图页面中插入JavaScript库所需的脚本。我知道Asp.net MVC是建立在Asp.net框架之上的。因此,我可以覆盖“System.Web.UI.Page”类中的许多方法,这些方法是“System.Web.Mvc.ViewPage”类的父类。

尽管如此,我可以通过重写呈现方法来实现这一点,但是对于XHTML1.0严格的,它使所有视图页都无效。正确的JavaScript必须放在HTML的标题标签中。

代码语言:javascript
复制
public class ViewPage<TModel> : ViewPage where TModel : class 
{
    protected override void Render(System.Web.UI.HtmlTextWriter writer)
    {
        base.Render(writer);
        writer.Write("<script type='text/javascript>applicationPath = window.applicationPath = 'somePath';</script>");
    }
}

谢谢,

PS。我知道我可以在每个母版页中创建一些代码。但是,对于其他开发人员来说,开始使用我的JavaScript源代码是相当复杂的。

EN

回答 2

Stack Overflow用户

发布于 2009-10-20 12:55:37

不要在代码中这样做;在标记中这样做。在正确有效的位置将脚本标记添加到您的Site.Master中。

票数 1
EN

Stack Overflow用户

发布于 2009-10-21 05:32:37

我只看到两个视图页面的头和视图母版页总是在服务器上运行。请查看以下模板。

默认模板ViewPage

代码语言:javascript
复制
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>

<!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 runat="server">
    <title></title>
</head>
<body>
    <div>

    </div>
</body>
</html>

默认模板ViewMasterPage

代码语言:javascript
复制
<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %>

<!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 runat="server">
    <title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /></title>
</head>
<body>
    <div>
        <asp:ContentPlaceHolder ID="MainContent" runat="server">

        </asp:ContentPlaceHolder>
    </div>
</body>
</html>

因此,通过在标头控件中添加一些控件可以很容易地解决这一问题。

代码语言:javascript
复制
public class ViewPage : mvc.ViewPage
{
    protected override void Render(System.Web.UI.HtmlTextWriter writer)
    {
        if (Header == null)
            throw new Exception("Header object is null. Please set header runat=\"server\".");

        Header.Controls.Add(new LiteralControl(CommonHelper.JavaScript(MvcUtils.GetApplicationUrl(Request) ,string.Empty)));

        base.Render(writer);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1593900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档