- 根據我的經驗,在模塊設置的門戶 級別沒有控制註冊。只有模塊和TabModule的作用域爲 設置,就像你說的。
- 我做的設置,允許一個「默認」的喜歡的方式是 這樣的:
創建一個設置界面:
public interface ISettingsRepository
{
string ReplyToAddress { get; set; }
string InviteEmailSubject { get; set; }
}
然後一個實現類(請注意,默認值是默認在getter中返回)。查看將屬性值寫入模塊設置的完整實現。
public class SettingsRepository : ISettingsRepository
{
/*
* See the full code at
* https://dnnsocialinvite.codeplex.com/SourceControl/latest#Components/SettingsRepository.cs
*/
...
public string ReplyToAddress
{
get { return ReadSetting<string>("ReplyToAddress", "[email protected]"); }
set { WriteSetting("ReplyToAddress", value.ToString()); }
}
public string InviteEmailSubject
{
get { return ReadSetting<string>("InviteEmailSubject", "You are invited to join"); }
set { WriteSetting("InviteEmailSubject", value.ToString()); }
}
}
然後你可以在你的模塊的設置控制中使用它。請注意,我可以將這些設置作爲屬性來引用並設置它們。如果我得到一個還沒有設置的,那麼默認值將被返回:
public override void LoadSettings()
{
SettingsRepository _settingsCtrl = SettingsRepository(this.ModuleId, this.TabModuleId);
txtEmailSubject.Text = _settingsCtrl.InviteEmailSubject;
}
public override void UpdateSettings()
{
SettingsRepository _settingsCtrl = SettingsRepository(this.ModuleId, this.TabModuleId);
_settingsCtrl.InviteEmailSubject = txtEmailSubject.Text;
}
現在,這個實現有一個硬編碼的擴展默認值。您可以從資源(.resx)文件中讀取默認設置字符串,也可以使用資源文件名中的門戶標識維護每個門戶的資源文件。該值可以取代設置屬性的getter中硬編碼的默認值。