使用属性设置.Net HTML服务器控件的值
本文关键字:服务器控件 HTML Net 属性 设置 | 更新日期: 2023-09-27 18:28:28
在.Net HTML服务器控件上使用属性获取或设置字段有什么缺点吗?
HTML
<span id="aSpan" runat="server"></span>
C#
public string AProperty
{
get {
return aSpan.InnerHtml;
}
set {
aSpan.InnerHtml = value;
}
}
不,使用属性设置和获取控件值是一个很好的解决方案(并非仅针对HtmlControls)。在使用模型视图演示者(MVP)模式时,我已经多次以这种方式使用它们。
这里是MVP模式的一个例子
型号:
public interface IPresentationModel
{
string AProperty { set; }
string ATextbox { get; set; }
event EventHandler SaveData;
event EventHandler LoadData;
}
视图,标记:
<form id="form1" runat="server">
<div>
<span id="aSpan" runat="server"></span>
<input type="text" id="aTextbox" runat="server"/>
<asp:Button ID="ButtonSave" runat="server" Text="Save" OnClick="ButtonSave_Click" />
</div>
</form>
视图,代码隐藏
public partial class View : Page, IPresentationModel
{
private Presenter _presenter;
protected override void OnInitComplete(EventArgs e)
{
base.OnInitComplete(e);
_presenter = new Presenter(this);
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
LoadData(this, e);
}
}
public string AProperty
{
set
{
aSpan.InnerHtml = value;
}
}
public string ATextbox
{
get
{
return aTextbox.Value;
}
set
{
aTextbox.Value = value;
}
}
public event EventHandler SaveData;
public event EventHandler LoadData;
protected void ButtonSave_Click(object sender, EventArgs e)
{
SaveData(this, e);
LoadData(this, e);
}
}
演示者
public class Presenter
{
private readonly IPresentationModel _model;
private static string _fakeService = "42";
public Presenter(IPresentationModel model)
{
_model = model;
_model.SaveData += SaveData;
_model.LoadData += LoadData;
}
private void LoadData(object sender, EventArgs e)
{
_model.AProperty = _fakeService;
_model.ATextbox = _fakeService;
}
private void SaveData(object sender, EventArgs e)
{
_fakeService = _model.ATextbox;
}
}