如何在ASP.NET中使用JCrop和Master Page

时间:2011-03-29 15:16:50

标签: jquery asp.net ajax jcrop

我正在使用asp.net 4,c#,jQuery 1.5.1和Jcrop-0.9.8。

对于jQuery,我使用MS CDN和ScriptManager加载包。

jQuery加载成功但我遇到了Jcrop的问题。

在调用Jcrop时,我在IE 8中收到错误。

Line: 461
Error: Object doesn't support this property or method

似乎我不能将jCrop与MasterPage一起使用。 我尝试在没有MasterPage关联的页面中使用相同的脚本,它正在工作。

你有任何想法如何解决它?谢谢你的时间。

GlobalAsax

protected void Application_Start(object sender, EventArgs e)
        {
            // Map jQuery to MS CDN Path
            ScriptResourceDefinition myScriptResDef = new ScriptResourceDefinition();
            myScriptResDef.Path = "~/Assets/Scripts/jQuery/jquery-1.5.1.min.js";
            myScriptResDef.DebugPath = "~/Assets/Scripts/jQuery/jquery-1.5.1.js";
            myScriptResDef.CdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.5.1.min.js";
            myScriptResDef.CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.5.1.js";
            ScriptManager.ScriptResourceMapping.AddDefinition("jquery", null, myScriptResDef);
        }

母版

<head runat="server">
    <title>Cms Administration</title>
    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>
</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="uxScriptManagerMasterPage" runat="server" EnableCdn="True">
        <Scripts>
            <asp:ScriptReference Name="jquery" />
        </Scripts>
    </asp:ScriptManager>       
    <div id="main-content">
        <asp:ContentPlaceHolder ID="MainContent" runat="server">
        </asp:ContentPlaceHolder>
    </div>
    </form>
</body>
</html>

子页面

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
    <script src="Assets/Scripts/Jcrop/js/jquery.Jcrop.min.js"></script>
    <link rel="stylesheet" href="Assets/Scripts/Jcrop/css/jquery.Jcrop.css" type="text/css" />
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <script type="text/javascript">

        $(document).ready(function () {
            $("#msgid").html("This is Hello World by JQuery");
        });

    jQuery(function(){
        jQuery('#cropbox').Jcrop();
    });

    </script>



    This is Hello World by HTML
    <div id="msgid">
    </div>

    <img src="demo_files/flowers.jpg" id="cropbox" />

</asp:Content>

2 个答案:

答案 0 :(得分:2)

有同样的问题,我找到了解决方案。

对于上述问题,解决方案应该是内容的页面jquery脚本。 您需要引用clientid,因为ASP.NET会在运行时在Master Page环境中以不同的方式呈现名称。

这样做:

将“#msgid”替换为“#&lt;%= msgid.ClientID%&gt;”

将“#cropbox”替换为“#&lt;%= cropbox.ClientID%&gt;”

这解决了我的问题。

祝你好运

答案 1 :(得分:1)

jQuery可能在jCrop之后加载,导致错误。尝试使用相同的方法为两个文件包含javascript,以便以正确的顺序加载。

或者,你可以试试这篇短文: http://nathanaeljones.com/573/combining-jcrop-and-server-side-image-resizing/