使用AsyncFileUpload控件上载图像后更新隐藏字段的值

时间:2012-03-05 15:24:43

标签: jquery asp.net

我使用AsyncFileUpload控件上传图片。

UploadedComplete上我尝试使用ScriptManager.RegisterClientScriptBlock为隐藏字段指定一些值。

HTML:

<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server" CombineScripts="false">
</asp:ToolkitScriptManager> 
<div>
    <asp:AsyncFileUpload ID="uplImage" OnUploadedComplete="uplImage_UploadedComplete"
        runat="server" Width="285px" ClientIDMode="AutoID" EnableViewState="false" />
    <asp:HiddenField runat="server" ID="hdnTempImgNm" />      
    <input type="button" id="btnCheck" value="Check" class="btnCheck" />
</div>

事件处理程序:

protected void uplImage_UploadedComplete(object sender, EventArgs args)
    {
        //1 case:
        //ScriptManager.RegisterClientScriptBlock(uplImage, uplImage.GetType
        //  (), "myscript",
        //String.Concat(" $(document).ready(function(){$('input:hidden
        //   [name*=\"hdnTempImgNm\"]').val('Some value');})"),true);

        //2 case:
        ScriptManager.RegisterClientScriptBlock(uplImage, uplImage.GetType
        (), "myscript",
        String.Concat("top.document.getElementById('" + hdnTempImgNm.ClientID 
         + "').value='Some value'; "),true);
    }

的javascript:

 <script>
    $(document).ready(function () {    
        $('.btnCheck').click(function (e) {
            alert($('input:hidden[name*="hdnTempImgNm"]').val());
        });
    })
</script>

在我点击“检查”按钮检查隐藏字段值的情况下,我得到一个空值。但在我使用top.document的2个案例中,我得到了正确的值,即“某些值”。

我的问题是: 1.为什么1例不起作用? 2.如何使用jquery重写2个案例(即如何编写top.document)?

谢谢

2 个答案:

答案 0 :(得分:0)

第一种情况:这是因为您的隐藏字段尚未加载。 所以不要写

 $(document).ready(function () {    
//your code
}

if you write

function pageLoad(){
   //you will find hidden field
}

答案 1 :(得分:0)

AsyncFileUpload正在使用iframe。因为在这种情况下只有top.document可以工作。 请参见链接http://www.mikeborozdin.com/post/AJAX-File-Upload-in-ASPNET-with-the-AsyncFileUpload-Control.aspx

所以第一种情况应该是这样的

ScriptManager.RegisterClientScriptBlock(uplImage,uplImage.GetType(),“myscript”,String.Concat(“$(document).ready(function(){$('input:hidden [name * = \”hdnTempImgNm \“ ]',window.parent.document).val(\“Some value \”);})“),true);