gpt4 book ai didi

javascript - Asp.Net Mvc - ContentPlaceHolder- Javascript

转载 作者:行者123 更新时间:2023-12-04 01:10:09 25 4
gpt4 key购买 nike

根据我所在的页面,我希望更改 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com