2012-10-16 20 views
2

从ASP.NET配置jQuery UI(或任何其他HTML/JavaScript小部件)的最佳方式是什么?最佳实践:如何使用ASP.NET配置jQuery UI

目前,我在ASP.NET UserControls中包装了jQuery UI控件,并添加了用于配置UI小部件的属性。使用内联ASP语法进行组态。 例如,DatePicker控件:然后

$("#yourDatePicker").datepicker({ 
    changeMonth: <%=ChangeMonthAllowed%>, 
    changeYear: <%=ChangeYearAllowed%> 
}); 

在这个例子中,ChangeMonthAllowedChangeYearAllowed将是对用户控件ASP.NET布尔属性。

另一种选择是使用Page.ClientScript.RegisterClientScriptBlock添加JS:建立日期选择器设置对象,并将其插入到页面中。

我不喜欢见风使舵但是:

  • 第一种方式增加了ASP.NET代码ASCX文件(或ASPX或JS文件)
  • 二的方式增加了JavaScript,将ASP.NET代码隐藏

我的问题:是否有一个干净(呃)的方式来实现带有代码隐藏属性的JS/HTML小部件配置?

+0

没有答案?这意味着每个人都混合使用代码隐藏和JavaScript?还是有其他方法可以实现这一目标? – Laoujin

回答

0

我现在在做什么:

我需要在JavaScript

静态.NET数据创建输出上建立一个静态的JS文件T4模板,并把它列入我的JS包。

我需要在ASPX

动态.NET数据在ASPX有一些JavaScript代码注入动态.NET数据转换成静态JS文件。

一个简单的例子:

MyProject.datePickers.Add({ 
    domSelector: "#yourDatePicker", 
    properties: { 
     changeMonth: <%=ChangeMonthAllowed%>, 
     changeYear: <%=ChangeYearAllowed%> 
    } 
}); 

这样,所有的 “动态.NET” 配置被注入到静态(即可测试&可重复使用的)的JavaScript文件。

2

您可以直接注入你的JavaScript的头标记,如下所示:

VB.NET

Dim script As New StringBuilder 
    'Build script   
    Dim scriptTags As New Literal 
    scriptTags.Text = script.ToString() 
    Page.Header.Controls.Add(scriptTags) 

C#

StringBuilder script = New StringBuilder(); 
    //Build script 
    Literal scriptTags = new Literal(); 
    scriptTags.Text = script.ToString(); 
    Page.Header.Controls.Add(scriptTags); 

如果你不希望你的JavaScript待建代码隐藏您可以创建一个新的带合并字段的txt或js文件,如下所示。当您构建脚本时,您可以简单地读取该文件并用所需的变量替换所有合并域。

$("#yourDatePicker").datepicker({ 
     changeMonth: %%ChangeMonthAllowed%%, 
     changeYear: %%ChangeYearAllowed%% 
    }); 

我喜欢用这种方法来注入我的JavaScript文件引用时,我有一个引用母版页,是不是在同一个文件夹页。这保证我的JavaScript文件始终被正确引用。