Member 1151923 Ответов: 0

Javacript дата контроля не работы на производственном сервере


У меня есть пользовательский элемент управления date picker, который размещен на главной странице. когда я запускаю приложение на локальном компьютере, появляется всплывающее окно для выбора даты, а на производственном сервере я смог выбрать дату в IE. Теперь все внезапное всплывающее окно даты не появляется на рабочем сервере, когда я отлаживаю это приложение на рабочем сервере, оно дает неперехваченное исключение.Я получаю исключение в приведенном ниже javascript

var formname = document.getElementById(txtBox).form.name; 

Я ничего не получаю в переменной formname, но то же самое работает раньше и на локальной машине. разница, которую я обнаружил, была в том, что префикс ctl00_ приходил на локальную машину, в то время как на производственном сервере префикс ctl00 не приходит сейчас, так в чем же может быть причина?
Я использую ASP.net 2.0 фреймворк. ниже приведен мой код
Asp.net код :

<asp:textbox id="tbDate" runat="server" Width="104px" CssClass="clsTextBox">        
        <asp:Image  id="imgCal" Visible="True" runat="server"  ImageUrl="../images/calendar.jpg"/>
с фоновым кодом:
protected override void OnPreRender(EventArgs e)
{
  //  base.OnPreRender(e);
    tbDate.Attributes.Add("onkeypress", "javascript:return WriteProtect()");
    imgCal.ImageUrl = "../images/calendar.jpg";

    imgCal.Attributes.Add("onclick", "javascript:cbfshowcalendar('" + imgCal.ClientID + "','" + tbDate.ClientID + "');event.cancelBubble=true;");

    if(!Page.ClientScript.IsStartupScriptRegistered("CalendarJS"))
    {
        Page.ClientScript.RegisterStartupScript(this.GetType(), "CalendarJS", "<script type='text/javascript'  src='../include/calendar.js'></script>");
    }
}

Язык JavaScript :
function cbfshowcalendar(imgObj, txtBox)
{
//The current size of the IFRAME is width=167 and height=185
//var x=eval("document.all." + imgname + ".offsetLeft");
//var y=eval("document.all." + imgname + ".offsetTop");
var objname = txtBox;
var imgname =  imgObj;

var formname = document.getElementById(txtBox).form.name; -- gets nothing in formname 


var x=findPosX(eval("document.all." + imgname));
var y=findPosY(eval("document.all." + imgname));
var max_x = window.screen.width;
var max_y = window.screen.height-100;
. . . .
function cbfloadmefirst(formname, objname)
{
var tempObj;
var tempDate;

tempObj = eval("document." + formname + "." + objname);  -- error on this line
Tags


Что я уже пробовал:

я обнаружил, что префикс ctl00_ приходит на локальную машину, в то время как на производственном сервере префикс ctl00 не приходит сейчас, так в чем же может быть причина?

Richard Deeming

Похоже, что сервер настроен для запуска вашего приложения в пуле приложений .NET 4.0, в то время как ваша локальная машина запускает его в пуле приложений .NET 2.0.

Member 1151923

Спасибо за ответ, но он установлен только на .NET 2.0

Richard Deeming

Пропажа ctl00 префикс противоречит этому. Это вызвано тем, что ClientIDMode, который был добавлен в .NET 4.0:
https://weblog.west-wind.com/posts/2009/Nov/07/ClientIDMode-in-ASPNET-40[^]

0 Ответов