加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 最佳实践 – 从Code-Behind设置jQuery属性

发布时间:2020-12-16 06:41:17 所属栏目:asp.Net 来源:网络整理
导读:我需要使用在代码隐藏中计算的值在jQuery命令中设置单个属性.我最初的想法只是使用%=%像这样访问它: 的.aspx script type="text/javascript" language="javascript"$('.sparklines').sparkline('html',{ fillColor: 'transparent',normalRangeMin: '0',no
我需要使用在代码隐藏中计算的值在jQuery命令中设置单个属性.我最初的想法只是使用<%=%>像这样访问它:

的.aspx

<script type="text/javascript" language="javascript">
$('.sparklines').sparkline('html',{
    fillColor: 'transparent',normalRangeMin: '0',normalRangeMax: <%= NormalRangeMax() %>
});
</script>

.aspx.cs

protected string NormalRangeMax() {
    // Calculate the value.
}

有趣的是,必须从ASPX页面调用才能获得单个值.更不用说我有一个完整的方法只需要填充一个属性进行小计算.

另一种方法是创建整个< script>使用clientScriptManager.RegisterClientScriptBlock在代码隐藏中阻止.但我真的不喜欢把整个JavaScript块放在代码隐藏中,因为它的JavaScript就好了.

也许如果我最终拥有许多这样的方法,我可以把它放在一个部分类中,所以至少它们与其余代码在物理上是分开的.

您建议使用哪种方法易于理解且易于维护?

解决方法

< %%>工作良好.我做的一件事是在页面上的隐藏字段中设置一个值(然后编写必要的javascript以提取该值),这很好,因为我可以通过javascript更改该隐藏字段,当/如果页面回发我可以从后面的代码中获取新值.

如果需要按需调用方法,可以对ASP.NET WebMethod执行jQuery AJAX调用以获取数据并重新填充各种选项.你可以在这里找到一个关于如何做到这一点的好教程:http://encosia.com/2008/05/29/using-jquery-to-directly-call-aspnet-ajax-page-methods/

下面是一些使用隐藏字段方法的示例代码(使用datepicker控件,但你会得到这个想法):

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:TextBox ID="txtCalendar" runat="server" />
            <asp:HiddenField ID="hfTest" runat="server" />
        </div>
    </form>

    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>

    <script type="text/javascript" src="http://ui.jquery.com/latest/ui/ui.datepicker.js"></script>

    <script type="text/javascript">
    var dateMinimum = new Date($("#<%= hfTest.ClientID %>").val());

    $(function() {
        $("#<%= txtCalendar.ClientID %>")
            .datepicker({
                minDate: dateMinimum
            });
    });
    </script>
</body>

而Page_Load方法背后的代码:

protected void Page_Load(object sender,EventArgs e)
{
    // Set Value of Hidden Field to the first day of the current month.
    this.hfTest.Value = new DateTime(DateTime.Today.Year,DateTime.Today.Month,1).ToString("MM/dd/yyyy");
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读