2010-03-17 95 views
4

我使用關聯的客戶端API創建ASP.NET服務器控件。ScriptControlDescriptor.AddProperty&只讀屬性

在我GetScriptDescriptors()方法我關聯一個名爲「行」的屬性...

descriptor.AddProperty("rows", this.IntRows); 

在我的客戶端API我想是隻讀的我的「行」屬性.. 。

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'); 
    } 
} 

然而,這將導致以下錯誤......

Error: Sys.InvalidOperationException: 'rows' is not a writable property.

下制定者似乎被要求或DER爲$ create語句分配「行」這是初始值:

set_rows: function(value) 
{ 
    this._rows = value; 
}, 

我怎樣才能讓「行」屬性只讀在客戶端API,如果需要的setter從賦值AddProperty調用?

回答

0

最簡單的方法是讓set_rows忽略任何輸入。實際上,這應該完全停止Exception並且仍然爲該屬性提供Read Only功能。

set_rows: function(value) 
{ 
    value = null; 
}, 
+0

感謝您的回覆。我還沒有機會測試它。不過,我不確定我是否遵循了您的示例。如果調用者被調用,那麼不會簡單地清除「行」值嗎? – 2011-01-21 09:10:31

+0

@Poz你的糾正會。我將錯誤的選項設置爲null。另一種選擇是拋出一個未實現的異常,但是這需要由編碼器處理。寧可只是默默地忽略這個集合。 – BinaryMisfit 2011-01-21 09:22:40

+0

感謝您的澄清。 – 2011-01-24 14:51:36