gpt4 book ai didi

asp.net - 最佳实践 - 从代码隐藏中设置 jQuery 属性

转载 作者:行者123 更新时间:2023-12-01 00:09:26 24 4
gpt4 key购买 nike

我需要使用在代码隐藏中计算的值在 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 block 放在代码隐藏中,因为它是 JavaScript。

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

您会推荐哪种方法易于理解且易于维护?

最佳答案

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

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

下面是一些使用隐藏字段方法的示例代码(使用日期选择器控件,但您会明白的):

<%@ 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");
}

关于asp.net - 最佳实践 - 从代码隐藏中设置 jQuery 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/471820/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com