none
вызов функции javascript из asp.et RRS feed

  • Вопрос

  • Добрый день.
    у меня есть веб ресурс у компонента с javascript кодом
    [assembly: WebResource("HtmlEditorB.Scripts.client.js", "text/javascript")]
    
     добавил его на страницу с другими необходимыми мне скриптами
     
      public IEnumerable<ScriptDescriptor> GetScriptDescriptors()
      {
       ScriptControlDescriptor descriptor = new ScriptControlDescriptor("HtmlEditorB.EditorControl", this.ClientID);
       descriptor.AddProperty("message", this.iframe.ClientID);
       descriptor.AddProperty("inptID", this.inpt.ClientID);
       descriptor.AddProperty("colrID",this.colr.ClientID);
       return new ScriptDescriptor[] { descriptor };
      }
    
      public IEnumerable<ScriptReference> GetScriptReferences()
      {
       ScriptReference a = new ScriptReference("HtmlEditorB.Scripts.EditorControl.js", "HtmlEditorB");
       ScriptReference b = new ScriptReference("HtmlEditorB.Scripts.jquery.colorPicker.js", "HtmlEditorB");
       ScriptReference c = new ScriptReference("HtmlEditorB.Scripts.jquery-1.2.6.js", "HtmlEditorB");
       ScriptReference d = new ScriptReference("HtmlEditorB.Scripts.client.js", "HtmlEditorB");
       return new ScriptReference[] { c,d,a, b };
      }
    
    в этом скрипте есть функция
    function GetText(a) {
     var iframe_window = window.frames[a];
     this._text = iframe_window.document.getElementsByTagName("body")[0].innerHTML;
     return this._text;
    }
    
     
     
    у моего компонента есть сво-во
     
     public string GetText()
      {
    
       return string r;
      }
    
     
     
    как мне вызвать из этого свойства данную javascript функцию находящиюся в данном веб ресурсе.
    при вызове из кода javascript функции следует передать в качестве входяшего параметра  id обьекта, тобиш  this.iframe.ClientID
    и послетого как javascript функция выполнелась , она возврошает текст. и этот текст нужно получить на сервере и передать его свойству
    public string Text { get; set; }
    
    заранее благодарю

Ответы

  • вообщем

    я создал скрытое поле    

     protected HiddenField HiddenField
    

    при отправке информации на сервер  скрытаму полю передаю содержимое iframe ,

    
    
     var iframe_window = window.frames["EditorContro"];
    
     this._text = iframe_window.document.getElementsByTagName("body")[0].innerHTML;
     if (this._text != "") {
      HiddenField.value = this._text;
    

     и на сервере соотественно обрабатываю 

     

      public string Text
      {
       get
       {
        return this.HiddenField.Value;
    
       }
      }
    
    и вот итоге работает 

     

     

     


    • Предложено в качестве ответа PashaPash 13 мая 2011 г. 22:21
    • Помечено в качестве ответа Abolmasov DmitryModerator 14 мая 2011 г. 20:40

Все ответы

  • А скажите - какую задачу-то Вы пытаетесь решить?

    Думается, мне - есть, возможно, более простые альтернативы.

    Расскажите, пожалуйста, поподробней.


    Don't forget to vote for useful replies and/or mark answers for your questions - that helps other guys to find the answer faster.
  • рассказываю

    я пишу компонент html editor так называемый.

    я создал библиотеку . в ней описал html модель 

    все это я описывал через подобный класс

     

    HtmlGenericControl editor = new HtmlGenericControl("div");
       editor.ID = "Panel";
       editor.Style["position"] = "relative";
       editor.Style["border"] = "groove";
       editor.Style["height"] = "190px";
       editor.Style["width"] = "42%";
       editor.Style["background-color"] = "#FFDEAD";
       editor.Style["box-shadow"] = "0 0 5px black";
       editor.Style["box-shadow"] = "0 0 10px rgba(0,0,0,0.5)";
       editor.Style["-moz-box-shadow"] = "0 0 10px rgba(0,0,0,0.5)";
       editor.Style["-webkit-box-shadow"] = "0 0 10px rgba(0,0,0,0.5)";
       editor.Style["border"] = "1px solid black";
       editor.Style["border-radius"] = "5px";
       editor.Style["border-radius"] = "5px";
    

     

    и т.д

    потом я описал javascript класс, зарегил нем пространство имен чтобы он в веб ресурсы подключался,непосредственно в нем инициализируется прочие элементы на скрипте и определяются событийные функции. это находиться в файлике 

     

    ScriptReference a = new ScriptReference("HtmlEditorB.Scripts.EditorControl.js", "HtmlEditorB") , сами методы и соб. функции находятся в
     ScriptReference d = new ScriptReference("HtmlEditorB.Scripts.client.js", "HtmlEditorB")
    функция котрая созает палитру,(я ее написал на jquery) находиться 
    ScriptReference b = new ScriptReference("HtmlEditorB.Scripts.jquery.colorPicker.js", "HtmlEditorB"
    и подключаемый файл jqwery
     ScriptReference c = new ScriptReference("HtmlEditorB.Scripts.jquery-1.2.6.js", "HtmlEditorB"

    и вот на выходе получаем dll, который кидаем на тулбокс и появляется вот такой едитор

    #mce_temp_url#

    теперь осталось реализовать метод который бы возвращает html текст из этого едитора...

    я написал javascript функцию которая извлекает текст из едитора, и оставалось как то ее с серверным кодом связать. 

    думал через view state но пока не совсем разобрался как это делать.

    может конечно есть другие варианты получения текста.

    такова задача, и так я ее попробовал реализовать, может не совсем правильно.

    буду рад предложениям.


  • хотя если и можно то ViewState же нужно будет обуздать, Ведь занимающее от 50% размера страницы состояние представления — это не очень хорошо с точки зрения клиентской оптимизации
  • Уважаемый пользователь!

    В вашей теме отсутствует активность в течение последних 5 дней. При отсутствии каких-либо действий в течение 2 последующих дней, тема будет переведена в разряд обсуждений. Вы можете возобновить дискуссию, просто оставив сообщение в данной теме


    Для связи [mail]
    Модератор
  • я понел что так у меня не поулчиься вызвать данную javascipt функциию,

    и сделал следуйшие вешь

     HtmlGenericControl iframe;

    потом в функции проинециализировал его добавив атрибуты и стиль   

     protected HtmlGenericControl CreateEditor()
    
      {....
    
       iframe = new HtmlGenericControl("iframe");
    
       iframe.ID = "textEd";
    
       iframe.Attributes["runat"] = "server";
    
       iframe.Style["position"] = "absolute";
    
       iframe.Style["border"] = "1px #000033 solid";
    
       iframe.Style["left"] = "5px";
    
       iframe.Style["top"] = "40px";
    
       iframe.Style["height"] = "140px";
    
       iframe.Style["width"] = "97%";
    
       iframe.Style["background-color"] = "White";
    
       iframe.Style["border-radius"] = "5px";
    
       editor.Controls.Add(toolBox);
    
       editor.Controls.Add(iframe);
    
    

    после чего в сво-ве написал  так

      public string Text
    
      {   get
    
       {
    
        return (this.iframe.InnerHtml);
    
       }
    
      }
    
    

    но как изображено на скрине не чего не дало 

    http://s2.ipicture.ru/uploads/20110510/U7iNtCUJ.png

    в чем моя ошибка, почему не срабатывает сво-во InnerHtml

    javascript только сопутствует редактированию в iframe.

  • вообщем

    я создал скрытое поле    

     protected HiddenField HiddenField
    

    при отправке информации на сервер  скрытаму полю передаю содержимое iframe ,

    
    
     var iframe_window = window.frames["EditorContro"];
    
     this._text = iframe_window.document.getElementsByTagName("body")[0].innerHTML;
     if (this._text != "") {
      HiddenField.value = this._text;
    

     и на сервере соотественно обрабатываю 

     

      public string Text
      {
       get
       {
        return this.HiddenField.Value;
    
       }
      }
    
    и вот итоге работает 

     

     

     


    • Предложено в качестве ответа PashaPash 13 мая 2011 г. 22:21
    • Помечено в качестве ответа Abolmasov DmitryModerator 14 мая 2011 г. 20:40