javascript - Asp.Net Mvc - ContentPlaceHolder- Javascript

标签 javascript asp.net-mvc contentplaceholder

根据我所在的页面,我希望更改 javascript 函数的内容。

示例:

母版页

<script type="text/javascript">
    Cufon.now();
    Cufon.replace('p#characters', { fontFamily: 'Helvetica95-Black' });
</script>

页面A

<script type="text/javascript">
    Cufon.now();
    Cufon.replace('p#characters', { fontFamily: 'Helvetica95-Black' });
    Cufon.replace('p#others', { fontFamily: 'Helvetica95-Black' });
</script>

因为我不想重复代码,所以我正在寻找解决方案。我想也许我可以像这样使用像 ContentPlaceHolder 这样的东西(但它不起作用):

<script type="text/javascript">
    Cufon.now();
    Cufon.replace('p#characters', { fontFamily: 'Helvetica95-Black' });

    <asp:ContentPlaceHolder id="cphJS" runat="server" />
</script>

有什么办法可以解决这种问题吗?

更新

我想避免的是这样的代码:

// Add by MasterPage
<script type="text/javascript">
    Cufon.now();
    Cufon.replace('p#characters', { fontFamily: 'Helvetica95-Black' });
</script>

// Add by Page A
<script type="text/javascript">
    Cufon.now();
    Cufon.replace('p#others', { fontFamily: 'Helvetica95-Black' });
</script>

// Add by Page B
<script type="text/javascript">
    Cufon.now();
    Cufon.replace('p#main', { fontFamily: 'Helvetica95-Black' });
    Cufon.replace('p#menu', { fontFamily: 'Helvetica95-Black' });
</script>

因为那种代码可以工作,但它不是清洁的方式。我宁愿有这样的东西:

<script type="text/javascript">
    Cufon.now();        
    Cufon.replace('p#characters', { fontFamily: 'Helvetica95-Black' });
    Cufon.replace('p#others', { fontFamily: 'Helvetica95-Black' });
    Cufon.replace('p#main', { fontFamily: 'Helvetica95-Black' });
    Cufon.replace('p#menu', { fontFamily: 'Helvetica95-Black' });
</script>

结果是一样的。我只发现第二个输出更干净。

最佳答案

为什么不简单地在脚本标签之外的内容占位符中添加附加代码?

所以,你会得到类似的东西:

<head>
   <script type="text/javascript">
      // do some stuff
   </script>
   <asp:ContentPlaceHolder runat="server" id="someid" />
</head>
...

或者,您可以在页面的早期将函数收集到数组中,然后像这样稍后执行它们:

在中:

var callbacks = [];
function addCallback(arg) {
   callbacks.push(arg);
}

在其他地方:

addCallback(function() {
   ...
});

然后在页面底部,就在 之前:

for (var i = 0; i < callbacks.length; i++) {
   var c = callbacks[i];
   if (c && c instanceof Function)
      c();
}

您能否提供有关要求的更多详细信息?例如:上面的代码应该做什么,是否必须一次全部执行,是否依赖于创建的局部变量,是否必须在特定时间运行等。

编辑: 在新的 MVC 项目中使用内容占位符似乎对我来说效果很好。 Intellisense 没有接收到它,但它呈现正确。以下是我的代码。

在母版页中:

...
<script type="text/javascript">
    var inTheMasterPage;
    <asp:ContentPlaceHolder runat="server" id="js1">
    </asp:ContentPlaceHolder>
</script>

...

在页面中:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>

<asp:Content runat="server" ContentPlaceHolderID="js1">
    var inThePage;
</asp:Content>
...

以及呈现的 HTML:

    <script type="text/javascript"> 
        var inTheMasterPage;

    var inThePage;

    </script> 
</head> 

关于javascript - Asp.Net Mvc - ContentPlaceHolder- Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2226032/

相关文章:

javascript - 播放媒体的 AudioContext 平移音频

asp.net-mvc - 使用 Session 进行 Asp.net MVC3 长轮询

asp.net-mvc - 如何为 Session 编写扩展而不必为 HttpSessionState 和 HttpSessionStateBase 编写单独的方法?

jquery - 如何在 ASP.NET MVC 中实现复选框列表?

javascript - 将回调函数传递给原型(prototype)

javascript - mui-datatables : Warning: Function components cannot be given refs. 尝试访问此 ref 将失败。你是想使用 React.forwardRef() 吗?

javascript - 如何使用位于 contentplaceholder 中的 asp.net 复选框控件的 javascript 函数?

c# - 在 ASP.NET 中使用 iFrame

javascript - 如何使用 javascript 检索隐藏字段值?

javascript - Highcharts : Disable top spacing from column graph