Asp.net 如何在WebFormsMvp中从视图到演示者获取多个属性值?
在WebFormsMvp页面中,从视图向演示者获取业务对象的多个属性值的最佳方法是什么 记住数据源的问题 以下是我的建议: 场景是,我有一个名为Quote的业务对象,我想从数据库中加载它,编辑然后保存。Quote类上有大量属性。该表格涉及其中约20个属性。我有一些现有方法可以将Quote对象加载到数据库或从数据库中保存Quote对象。我现在需要把这一切连接起来 因此,在演示者上的视图加载处理程序中,我打算执行以下操作:Asp.net 如何在WebFormsMvp中从视图到演示者获取多个属性值?,asp.net,webforms,mvp,webformsmvp,Asp.net,Webforms,Mvp,Webformsmvp,在WebFormsMvp页面中,从视图向演示者获取业务对象的多个属性值的最佳方法是什么 记住数据源的问题 以下是我的建议: 场景是,我有一个名为Quote的业务对象,我想从数据库中加载它,编辑然后保存。Quote类上有大量属性。该表格涉及其中约20个属性。我有一些现有方法可以将Quote对象加载到数据库或从数据库中保存Quote对象。我现在需要把这一切连接起来 因此,在演示者上的视图加载处理程序中,我打算执行以下操作: public void View_Load(object sender, E
public void View_Load(object sender, EventArgs e)
{
View.Model.Quote = quoteService.Read(quoteId);
}
然后按如下方式绑定我的所有控件:
<asp:TextBox ID="TotalPriceTextBox" runat="server"
Text="<%# Model.Quote.TotalPrice %>" />
很好,数据在屏幕上
然后用户进行一系列更改并点击“提交”按钮。这就是我不确定的地方
我创建了一个名为QuoteEventArgs的类,公开了表单可以编辑的20个属性。当视图引发Submit按钮的事件时,我将这些属性设置为代码隐藏中控件的值。然后引发演示者要响应的事件。演示者从数据库重新加载Quote对象,设置所有属性并将其保存到数据库中
这样做对吗?如果没有,什么是?“更好的方法”(/alternative)是使用双向绑定,因此将传递回演示者进行处理的将是您的报价对象
这可以通过将asp:FormView与指定UpdateMethod和Bind()方法的mvp:PageDataSource结合使用来实现
WebFormsMVP示例项目通过“EditWidgetControl”演示了这一点,包括查看代码隐藏文件所需的方法
作为一个选项,您的视图可以使用FormView上的DefaultMode=“Edit”仅实现asp:FormView的EditItemTemplate
样本结构:
<asp:FormView DataSourceID="theSource" DefaultMode="Edit">
<EditItemTemplate>
<fieldset>
<asp:TextBox id="totp" value='<%# Bind("TotalPrice") %>' runat="server" />
</fieldset>
</EditItemTemplate>
</asp:FormView>
<mvp:PageDataSource ID="theSource" runat="server"
DataObjectTypeName="Your.NameSpace.Quote"
UpdateMethod="UpdateQuote">
</mvp:PageDataSource>
代码隐藏:
public void UpdateQuote(Quote q, Quote ori)
{
OnUpdatingQuote(q, ori);
}
public event EventHandler<UpdateQuoteEventArgs> UpdatingQuote;
private void OnUpdatingQuote(Quote q, Quote ori)
{
if (UpdatingUserGroup != null)
{
UpdatingUserGroup(this, new UpdateQuoteEventArgs(q, ori));
}
}
public void updatekote(Quote q,Quote ori)
{
OnUpdatingQuote(q,ori);
}
公共事件处理程序更新报价;
私有无效onUpdategQuote(Quote q,Quote ori)
{
如果(UpdatengUserGroup!=null)
{
UpdategUserGroup(这是新的UpdateGroupEventArgs(q,ori));
}
}
“更好的方法”(/alternative)是使用双向绑定,因此将传递回演示者进行处理的将是您的报价对象
这可以通过将asp:FormView与指定UpdateMethod和Bind()方法的mvp:PageDataSource结合使用来实现
WebFormsMVP示例项目通过“EditWidgetControl”演示了这一点,包括查看代码隐藏文件所需的方法
作为一个选项,您的视图可以使用FormView上的DefaultMode=“Edit”仅实现asp:FormView的EditItemTemplate
样本结构:
<asp:FormView DataSourceID="theSource" DefaultMode="Edit">
<EditItemTemplate>
<fieldset>
<asp:TextBox id="totp" value='<%# Bind("TotalPrice") %>' runat="server" />
</fieldset>
</EditItemTemplate>
</asp:FormView>
<mvp:PageDataSource ID="theSource" runat="server"
DataObjectTypeName="Your.NameSpace.Quote"
UpdateMethod="UpdateQuote">
</mvp:PageDataSource>
代码隐藏:
public void UpdateQuote(Quote q, Quote ori)
{
OnUpdatingQuote(q, ori);
}
public event EventHandler<UpdateQuoteEventArgs> UpdatingQuote;
private void OnUpdatingQuote(Quote q, Quote ori)
{
if (UpdatingUserGroup != null)
{
UpdatingUserGroup(this, new UpdateQuoteEventArgs(q, ori));
}
}
public void updatekote(Quote q,Quote ori)
{
OnUpdatingQuote(q,ori);
}
公共事件处理程序更新报价;
私有无效onUpdategQuote(Quote q,Quote ori)
{
如果(UpdatengUserGroup!=null)
{
UpdategUserGroup(这是新的UpdateGroupEventArgs(q,ori));
}
}
如何在FormView中使用GridView。
因为我有一个列表来填充实体中的网格。如何在FormView中使用GridView。 因为我有一个列表来填充实体中的网格