2014-10-30 4 views
1

Есть ли недостатки с использованием свойства для получения или установки поля на .Net-сервере управления HTML?Использование свойства для установки значения .Net управления HTML-сервером

HTML

<span id="aSpan" runat="server"></span> 

C#

public string AProperty 
{ 
    get { 
    return aSpan.InnerHtml; 
    } 

    set { 
    aSpan.InnerHtml = value; 
    } 
} 

ответ

0

Нет, это может быть отличным решением для использования свойства для установки и получения значений управления (не специально для только 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; 
    } 
} 
Смежные вопросы