C# ScriptControlDescriptor.AddProperty&;只读属性

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

我正在使用关联的客户端API创建ASP.NET服务器控件

在我的GetScriptDescriptors()方法中,我将一个名为“rows”的属性关联起来

在我的客户端API中,我希望我的“rows”属性是只读的

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。另一种选择是抛出一个未实现的异常,但是这需要由编码器处理。而只是默默地忽略设置。感谢您的澄清。