Silverlight不;t调用OnLoad参数

本文关键字:OnLoad 参数 调用 Silverlight | 更新日期: 2023-09-27 17:59:01

我已经设置了Silverlight ASPX页面,如下所示:

<%@ Page Language="C#" MasterPageFile="~/ASPResources/MasterPage.master" AutoEventWireup="true"
CodeBehind="SilverlightPage.aspx.cs" Inherits="Adapt.Presentation.AssetInventory.SilverlightPage"
Title="Xivic" %>
<%@ MasterType VirtualPath="~/ASPResources/MasterPage.master" %>
<%@ Register Assembly="System.Web.Silverlight" Namespace="System.Web.UI.SilverlightControls"
TagPrefix="asp" %>
<asp:Content ID="Content2" ContentPlaceHolderID="mainContent" runat="server">
<script type="text/javascript" id="silverlightport">
    var silverlightControl = null;
    function pluginLoaded(sender, args)
    {
        silverlightControl = sender.getHost();
    }
    function externalCommand(data)
    {
        if (silverlightControl != null)
        {
            silverlightControl.Content.JSR.ExternalCommand(data);
        }
        else
        {
            alert("Couldn't get silverlight host object in SilverlightPage.aspx");
        }
    }
</script>
<asp:Silverlight ID="SilverlightLaunchPage" EnableGPUAcceleration="true" runat="server"
    Source="~/ClientBin/Xivic.xap" Width="100%" Height="100%" InitParameters="onLoad=pluginLoaded" />

Silverlight启动并且不能调用pluginLoaded函数,因为当我调用externalCommand功能时,未设置silverlightControl变量。因此,要么是我的Silverlight页面没有加载(我很确定它已经加载了),要么我的onLoad事件一定没有正确挂接(这更有可能是因为我对ASP几乎一无所知)。

有人能告诉我我在这里做错了什么吗?

Silverlight不;t调用OnLoad参数

这里是Silverlight 5控件的一个示例。我将其调整为您在示例中的内容

<head runat="server">
    <script type="text/javascript" src="..'Scripts'Silverlight.js"></script>
    <script type="text/javascript">
        function onSilverlightError(sender, args) {
            var appSource = "";
            if (sender != null && sender != 0) {
                appSource = sender.getHost().Source;
            }
            var errorType = args.ErrorType;
            var iErrorCode = args.ErrorCode;
            if (errorType == "ImageError" || errorType == "MediaError") {
                return;
            }
            var errMsg = "Unhandled Error in Silverlight Application " + appSource + "'n";
            errMsg += "Code: " + iErrorCode + "    'n";
            errMsg += "Category: " + errorType + "       'n";
            errMsg += "Message: " + args.ErrorMessage + "     'n";
            if (errorType == "ParserError") {
                errMsg += "File: " + args.xamlFile + "     'n";
                errMsg += "Line: " + args.lineNumber + "     'n";
                errMsg += "Position: " + args.charPosition + "     'n";
            }
            else if (errorType == "RuntimeError") {
                if (args.lineNumber != 0) {
                    errMsg += "Line: " + args.lineNumber + "     'n";
                    errMsg += "Position: " + args.charPosition + "     'n";
                }
                errMsg += "MethodName: " + args.methodName + "     'n";
            }
            throw new Error(errMsg);
        }
    </script>
    <script type="text/javascript" id="silverlightport">
        var silverlightControl = null;
        function pluginLoaded(sender, args)
        {
            silverlightControl = sender.getHost();
        }
        function externalCommand(data)
        {
            if (silverlightControl != null)
            {
                silverlightControl.Content.JSR.ExternalCommand(data);
            }
            else
            {
                alert("Couldn't get silverlight host object in SilverlightPage.aspx");
            }
        }
    </script>
</head>
<body>
    <form id="form1" runat="server" style="height: 100%">
        <div id="silverlightControlHost">
            <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
                <param name="source" value="../ClientBin/Xivic.xap" />
                <param name="onError" value="onSilverlightError" />
                <param name="onLoad" value="pluginLoaded" />
                <param name="background" value="#F2F2F2" />
                <param name="minRuntimeVersion" value="5.0.61118.0" />
                <param name="autoUpgrade" value="true" />
                <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=5.0.61118.0" style="text-decoration: none">
                    <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style: none" />
                </a>
            </object>
            <iframe id="_sl_historyFrame" style="visibility: hidden; height: 0; width: 0; border: 0"></iframe>
        </div>
    </form>
</body>

路径可能需要更改以匹配您的文件结构