在IIS上托管应用程序时,ct100_ContentPlaceholder1不工作

monwx1rj  于 2022-12-29  发布在  其他
关注(0)|答案(1)|浏览(128)

在IIS上承载ASP.NET应用程序时,在该应用程序上运行Javascript代码时遇到问题。在本地运行时,它工作正常。我将身份验证设置为匿名并打开静态内容。我在脚本上放置了Console.log("BeginningScriptTest"),它注册了。我将范围缩小到ct100_ContentPlaceHolder1,并收到错误Uncaught TypeError: Cannot set properties of undefined (setting 'value')。我还在窗体中添加了ControlIDMode="Static"
父代码:

protected void Page_Load(object sender, EventArgs e)
    {
        
        btnFromDate.Attributes.Add("onclick", "window.open('Calender.aspx?textbox=txtFromDate','SelectDate','width=250,height=280,left=570,top=250');");
        btnToDate.Attributes.Add("onclick", "window.open('Calender.aspx?textbox=txtToDate','SelectDate','width=250,height=280,left=570,top=250');");
    }

子代码:

protected void GetDateCal_SelectionChanged(object sender, EventArgs e)
    {
        if (Request.QueryString["textbox"] != "")
        {
            string strScript = "console.log('BeginningScriptTest');window.opener.document.forms[0].ctl00_ContentPlaceHolder1_" + Request.QueryString["textbox"].ToString() + ".value = '";
            strScript += GetDateCal.SelectedDate.ToString();
            strScript += "';window.opener.document.forms[0].submit();console.log('EndScriptTest');";
            Page.ClientScript.RegisterClientScriptBlock( this.GetType(), "Calendar_ChangeDate", strScript, true);

        }

    }

当我使用我的DevTools检查网页时,我可以清楚地看到脚本正在注册。

<form method="post" action"./Calender.aspx?textbox=txtFromDate" id="form1">
    <div class=aspNetHidden">...</div>
    <script type="text/javascript">...</script>
    <script type="text/javascript">
//<![CDATA[
console.log('BeginningScriptTest');window.opener.document.forms[0].ctl00_ContentPlaceHolder1_txtFromDate.value = '12/9/2022 12:00:00 AM';window.opener.document.forms[0].submit();console.log('EndScriptTest');//]]>
    </script>
    <div class="aspNetHidden">...</div>
    <div>...</div>
</form>

在我的IIS控制台上,我可以点击我的console.log('BeginningScriptTest'),然后跟着Uncaught TypeError: Cannot set properties of undefined (setting 'value')

gojuced7

gojuced71#

问题解决了。
它不是一个永久性的解决方案,因为它不能在本地工作,但是当它部署在IIS上时就可以工作。
我意识到我的父代码采用了ContentPlaceHolder_txtFromDate而不是ctl00_ContentPlaceHolder_txtFromDate的ID,所以我从脚本中删除了ctl00_前缀。
我很困惑,所以如果有人能给我解释一下,那就太好了。

<div class=aspNetHidden">...</div>
    <script type="text/javascript">...</script>
    <script type="text/javascript">
//<![CDATA[
console.log('BeginningScriptTest');window.opener.document.forms[0].ContentPlaceHolder1_txtFromDate.value = '12/9/2022 12:00:00 AM';window.opener.document.forms[0].submit();console.log('EndScriptTest');//]]>
    </script>
    <div class="aspNetHidden">...</div>
    <div>...</div>
</form>

相关问题