是否可以在Scriptcontrol中绑定客户端和服务器端的属性,所以当我在javascript中设置属性时,更改将在后面的代码中可见,当我在代码中设置属性时,更改将在javascript中可见?
我不能像上面那样工作 - 它最初是设置的,当我设置声明scriptcontrol的属性时,但是当我稍后更改它时它仍然和以前一样......
编辑:我尝试在ASP.NET应用程序中为长回发执行ProgressBar。我尝试了很多选项,但没有一个适用于我...我想在代码中设置进度值,并在长期任务回发期间更新它。ScriptControl的代码: C#:
public class ProgressBar : ScriptControl
{
private const string ProgressBarType = "ProgressBarNamespace.ProgressBar";
public int Value { get; set; }
public int Maximum { get; set; }
protected override IEnumerable<ScriptDescriptor> GetScriptDescriptors()
{
this.Value = 100;
this.Maximum = 90;
var descriptor = new ScriptControlDescriptor(ProgressBarType, this.ClientID);
descriptor.AddProperty("value", this.Value);
descriptor.AddProperty("maximum", this.Maximum);
yield return descriptor;
}
protected override IEnumerable<ScriptReference> GetScriptReferences()
{
yield return new ScriptReference("ProgressBar.cs.js");
}
}
使用Javascript:
Type.registerNamespace("ProgressBarNamespace");
ProgressBarNamespace.ProgressBar = function(element) {
ProgressBarNamespace.ProgressBar.initializeBase(this, [element]);
this._value = 0;
this._maximum = 100;
};
ProgressBarNamespace.ProgressBar.prototype = {
initialize: function () {
ProgressBarNamespace.ProgressBar.callBaseMethod(this, "initialize");
this._element.Value = this._value;
this._element.Maximum = this._maximum;
this._element.show = function () {
alert(this.Value);
};
},
dispose: function () {
ProgressBarNamespace.ProgressBar.callBaseMethod(this, "dispose");
},
get_value: function () {
return this._value;
},
set_value: function (value) {
if (this._value !== value) {
this._value = value;
this.raisePropertyChanged("value");
}
},
get_maximum: function () {
return this._maximum;
},
set_maximum: function (value) {
if (this._maximum !== value) {
this._maximum = value;
this.raisePropertyChanged("maximum");
}
}
};
ProgressBarNamespace.ProgressBar.registerClass("ProgressBarNamespace.ProgressBar", Sys.UI.Control);
if (typeof (Sys) !== "undefined") Sys.Application.notifyScriptLoaded();
我会感谢任何实现此进度条的方法......
答案 0 :(得分:1)
就个人而言,我经常使用隐藏字段。 请记住,隐藏的字段不安全并且可能有其他垮台,因为它们实际上并没有隐藏它们的值,只是不显示它。
ASPX标记
<asp:HiddenField ID="hiddenRequest" runat="server" ClientIDMode="Static" />
背后的ASPX.CS代码
public string HiddenRequest
{
set
{
hiddenRequest.Value = value;
}
get
{
return hiddenRequest.Value;
}
}
页面JAVASCRIPT(使用jQuery)
$('#hiddenRequest').val('MyResult');
这样,我可以使用一个变量访问同一个字段,从客户端和服务器端访问。