【问题标题】:Execute Javascript inside a partial view in ASP.NET MVC在 ASP.NET MVC 的局部视图中执行 Javascript
【发布时间】:2009-09-18 22:33:03
【问题描述】:

我在 head 标记中使用此 JavaScript 代码,以便使用浏览按钮填充 div,以便用户可以上传图像 (swfupload)。

<head>
...
<script type="text/javascript">
    var swfu = function() {
        return new SWFUpload({
            // Backend Settings
            // settings go here...
            // Too long to display here
            // Debug Settings
            debug: false
        });
    }
    window.onload = swfu;
</script>
</head>

....

<div id="swfu_container" style="margin: 0px 10px;">
    <div>
    <span id="spanButtonPlaceholder"></span>
</div>
<div id="divFileProgressContainer" style="height: 75px;"></div>
<div id="thumbnails"></div>
</div>

这很好用,但问题是当我尝试将此代码放在局部视图中时。到目前为止,我还不能让它工作。

有没有经验更丰富的救援人员?

谢谢

【问题讨论】:

  • 你想在局部中加入什么? HTML 的后半部分('swfu_container' 中的所有内容)?
  • 我写 window.onload = swfu (在脚本中,在 head 标签内),以便将所有内容都放在“swfu_container”(部分中的部分)中。我认为问题在于,当页面加载时,部分还没有出现!我相信解决方案是让脚本仅在加载部分时执行。谢谢!

标签: asp.net-mvc swfupload javascript


【解决方案1】:

你可以这样写你的函数:

<%= Ajax.ActionLink("YourAction",new AjaxOptions{ OnSuccess="swfu", UpdateTargetId = "spanButtonPlaceholder" }) %> 

所以如果您的更新成功,您的 swfu 函数将被调用

【讨论】:

  • 抱歉耽搁了,您的回答已经解决了这个问题。谢谢格雷瓜尔!
【解决方案2】:

window.onload 的目的是在页面完成...加载后执行给定的函数。也就是说,您应该考虑将负载移动到身体的底部。而且我不是世界上最大的将脚本留在脑海中的粉丝。 :)

【讨论】:

  • 我明白您关于将脚本保留在正文底部的观点。问题是只有在用户完成某些操作后才会加载部分内容。因此,在头部或身体底部加载并不能解决问题。我尝试将此代码(脚本和 HTML)放在部分本身中,但它不起作用。仅当部分出现在屏幕上时,我才需要脚本运行和填充 div。我们该怎么做??
【解决方案3】:

部分视图使用不评估 JavaScript 代码的 Microsoft Ajax 呈现。我建议在这种情况下不要使用部分视图,或者看看其他视图引擎,如 Spark....或者将所有必需的 javascript 放在你的父视图中,这会让你的代码有点草率

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    • 2019-10-03
    • 1970-01-01
    相关资源
    最近更新 更多