Пользовательский элемент управления на странице ASPX не работает с JavaScript - PullRequest
2 голосов
/ 27 марта 2012

У меня очень простой пользовательский элемент управления, написанный на c # и скомпилированный в dll.Я помещаю этот элемент управления в страницу aspx, используя тег объекта, а затем пытаюсь сделать что-то с ним в JavaScript.У меня есть другие элементы управления, которые прекрасно работают, но по какой-то причине этот не работает.Вот код:


using System.Windows.Forms;

namespace FileBrowser {
    public partial class theBrowser : UserControl {
        public theBrowser() {
            InitializeComponent();
            MessageBox.Show("TBI");
        }
        public string theFile = "foobar";
    }
}

Вот код веб-страницы:

   <object id='fileBrowserControl' classid='http:FileBrowser.dll#FileBrowser.theBrowser'>
            <span>File control did not initialize.</span>

Тогда

   <script type="text/javascript">
  $(function() {
var mfc = $('#fileBrowserControl')[0];
alert(mfc.theFile);
  });

Когда я загружаю страницу, MessageBox показывает, что конструктор сработал, но предупреждение javascript выдает «undefined» для строки компонента.Это урезанная версия, в реальной версии я также не могу вызывать публичные функции из javascript.Я получаю сообщение об ошибке: «объект не поддерживает это свойство или метод».

Я, очевидно, упускаю что-то действительно простое, но не вижу его.Спасибо за любую помощь.Jon

Ответы [ 2 ]

1 голос
/ 27 марта 2012

Да, управляемый ASP.NET код не подключается к клиентскому скрипту автоматически, вы должны сами это подключить.Мое предложение будет:

1) Создайте свой UserControl как веб-контроль пользователя

2) Зарегистрируйте его на странице aspx: http://msdn.microsoft.com/en-us/library/sbz9etab.aspx

3) В коде-после вашего пользовательского элемента управления, после его загрузки, вставьте значение вашего свойства "theFile" в скрипт вашего элемента управления, используя что-то вроде этого:

Page.ClientScript.RegisterStartupScript(Page.GetType(),"inject","var theFile='" + this.theFile + "';",true);

4) Затем вы можете получить доступ к этому значению в JavaScript, используя "theFile"«переменная

0 голосов
/ 27 марта 2012

Решено! Спасибо за ввод.

Вот статья, которая показывает, как: http://www.olavaukan.com/2010/08/creating-an-activex-control-in-net-using-c/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...