Нет, это может быть отличным решением для использования свойства для установки и получения значений управления (не специально для только HtmlControls). Я использовал их так много раз, используя Model View Presenter (MVP) pattern.
Вот пример шаблона MVP
Модель:
public interface IPresentationModel
{
string AProperty { set; }
string ATextbox { get; set; }
event EventHandler SaveData;
event EventHandler LoadData;
}
View, Markup:
<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>
View, Code Behind
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);
}
}
Presenter
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;
}
}