Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何在WebFormsMvp中从视图到演示者获取多个属性值?_Asp.net_Webforms_Mvp_Webformsmvp - Fatal编程技术网

Asp.net 如何在WebFormsMvp中从视图到演示者获取多个属性值?

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

在WebFormsMvp页面中,从视图向演示者获取业务对象的多个属性值的最佳方法是什么

记住数据源的问题

以下是我的建议:

场景是,我有一个名为Quote的业务对象,我想从数据库中加载它,编辑然后保存。Quote类上有大量属性。该表格涉及其中约20个属性。我有一些现有方法可以将Quote对象加载到数据库或从数据库中保存Quote对象。我现在需要把这一切连接起来

因此,在演示者上的视图加载处理程序中,我打算执行以下操作:

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。 因为我有一个列表来填充实体中的网格