C# ScriptControlDescriptor.AddProperty&;只读属性
我正在使用关联的客户端API创建ASP.NET服务器控件 在我的GetScriptDescriptors()方法中,我将一个名为“rows”的属性关联起来 在我的客户端API中,我希望我的“rows”属性是只读的C# ScriptControlDescriptor.AddProperty&;只读属性,c#,asp.net,client-side,servercontrols,C#,Asp.net,Client Side,Servercontrols,我正在使用关联的客户端API创建ASP.NET服务器控件 在我的GetScriptDescriptors()方法中,我将一个名为“rows”的属性关联起来 在我的客户端API中,我希望我的“rows”属性是只读的 MyControl = function(element) { MyControl.initializeBase(this, [element]); this._rows; } MyControl.prototype = { initialize: funct
MyControl = function(element)
{
MyControl.initializeBase(this, [element]);
this._rows;
}
MyControl.prototype =
{
initialize: function()
{
MyControl.callBaseMethod(this, 'initialize');
},
get_rows: function()
{
return this._rows;
},
dispose: function()
{
MyControl.callBaseMethod(this, 'dispose');
}
}
但是,这会导致以下错误
错误:Sys.invalidoOperationException:
“行”不是可写属性
set_rows: function(value)
{
value = null;
},
下面的setter似乎是$create语句为“rows”分配初始值所必需的:
set_rows: function(value)
{
this._rows = value;
},
如果需要setter从AddProperty调用中分配值,如何使客户端API中的“rows”属性为只读?最简单的方法是让set\u行忽略任何输入。这将有效地阻止异常的发生,并且仍然为属性提供只读功能
set_rows: function(value)
{
value = null;
},
谢谢你的回复。我还没有机会测试它。但是我不确定我是否遵循了你的样品。如果调用setter,那么这不是简单地清除“rows”值吗?@Poz您会更正它。我将错误的选项设置为null。另一种选择是抛出一个未实现的异常,但是这需要由编码器处理。而只是默默地忽略设置。感谢您的澄清。