2

从 ASP.NET 配置 jQuery UI(或任何其他 HTML/JavaScript 小部件)的最佳方法是什么?

目前,我将 jQuery UI 控件包装在 ASP.NET UserControls 中,并添加了属性来配置 UI 小部件。

使用内联 ASP 语法进行配置<%=SomePropertyName %>。例如,DatePicker 控件:

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

在此示例中,ChangeMonthAllowed然后ChangeYearAllowed将是 ASP.NET UserControl 上的布尔属性。

另一种选择是使用以下方法添加 JS Page.ClientScript.RegisterClientScriptBlock:构建 datepicker 设置对象并将其插入页面。

然而,我不喜欢这两种方式:

  • 第一种方法将 ASP.NET 代码添加到 ascx 文件(或 aspx 或 JS 文件)
  • 第二种方式将 JavaScript 添加到 ASP.NET 代码隐藏

我的问题:有没有一种更简洁的方式来实现具有代码隐藏属性的 JS/HTML 小部件配置?

4

2 回答 2

2

您可以将 JavaScript 直接注入到 head 标签中,如下所示:

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 文件总是被正确引用。

于 2012-10-19T10:12:00.803 回答
0

我现在应该做什么:

我需要 JavaScript 中的静态 .NET 数据

我创建了一个 T4 模板,它在构建时输出一个静态 JS 文件,并将它包含在我的 JS 包中。

我需要 ASPX 中的动态 .NET 数据

在 aspx 中有一些 JavaScript 将动态 .NET 数据注入到静态 JS 文件中。

一个简单的例子:

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

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

于 2015-02-11T15:31:09.370 回答