2013-05-28 1 views
0

Мне нужна помощь с jQuery. На данный момент я создаю свой серверный элемент управления, в котором есть div. Внутри этого div есть iFrame. Я хочу, чтобы иметь возможность изменять размер моего div с помощью jQuery. Я выполнил это с помощью простых образцов.Регистрация кода JavaScript в серверном управлении

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

В настоящее время я регистрирую все соответствующие файлы * .js на главной странице. У меня есть дочерняя страница, наследующая главную страницу. На этой странице у меня есть контроль. Я не могу создать файл * .js и зарегистрировать его, поскольку у меня может быть несколько экземпляров одного и того же элемента управления.

Где я могу зарегистрировать свой блок сценариев? Как это делается?

Любые разъяснения по этому вопросу будут высоко оценены.

ответ

1

Этот сервер управляет сервером или .Ascx Server? Если это серверный контроль, какой тип управления он наследует? Если вы унаследовали от WebControl, вы можете сделать что-то вроде этого (это сокращенный пример, поэтому потребует некоторой работы на вашей стороне):

Public Class myControl 
    Inherits WebControl 

     Private Sub attachWebResources() 

     Dim styleLink As String = "<link rel='stylesheet' text='text/css' href='{0}' />" 
     Dim location As String = Page.ClientScript.GetWebResourceUrl(Me.[GetType](), "myApp.WebControls.myStyles.css") 
     Dim styleInclude As New LiteralControl([String].Format(styleLink, location)) 
     DirectCast(Page.Header, HtmlControls.HtmlHead).Controls.Add(styleInclude) 

     ScriptManager.RegisterClientScriptResource(Me, Me.GetType, "myApp.WebControls.jquery-1.4.1.min.js") 


     EnsureChildControls() 

    End Sub 


     Protected Overrides Sub OnInit(ByVal e As System.EventArgs) 
     attachWebResources() 
     MyBase.OnInit(e) 
    End Sub 

End Class 

Этот пример показывает, как включен встроенный CSS и JS файл ваш контроль. Вам нужно будет включить JS и CSS-файл в проект веб-библиотеки управления. Затем необходимо добавить ссылку на файл JS в файле Assemblyinfo.vb, как это:

<Assembly: Web.UI.WebResource("myApp.WebControls.jquery-1.4.1.min.js", "text/javascript")> 

Если это веб-контроль ASCX, или любой вид управления сервера, вы можете добавить код, как это:

Dim myScript As New StringBuilder 
    myScript.Append("function helloWorld(){" & vbCrLf) 
    myScript.Append("alert('hello world')" & vbCrLf) 
    myScript.Append("}" & vbCrLf) 

    Page.ClientScript.RegisterStartupScript(Me.GetType(), "myKey", myScript.tostring, True) 

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

+0

Хммм, я получаю то, что вы пишете, и я уже сделал это для JS-функций. Моя проблема - код jQuery. Это выглядит так: $ (document) .ready (function() {$ ('# myControl'). Draggable();}); - этот код нужно писать динамически где-то. Где и как? Чтобы это было частью JS-файла, мне пришлось бы сделать весь файл, записать его на диск, зарегистрировать его как ресурс и зарегистрировать его как скрипт. Это рекомендуется делать так? Я немного потерялся здесь, поскольку я довольно новичок в jQuery. – Rob

+0

Я не понимаю, почему это было бы проблемой. Я использовал этот метод (первый пример) с JQuery. В конце концов, jQuery - это просто javascript. Конечно, вам нужно будет включить различные библиотеки jQuery, которые вы будете использовать. Скорее всего, ваш проект уже включил их. У вас есть два варианта, включая те библиотеки, которые я предложил в первом примере (и вы также можете добавить свой собственный JS-файл таким образом) или заставить пользователя вашего контроля включать их в свое приложение (что я не считаю необоснованным) , Я не совсем уверен, что вы думаете. – jason

Смежные вопросы