使用模型绑定将模型手动绑定到ASP.NET FormView

使用模型绑定将模型手动绑定到ASP.NET FormView,asp.net,.net,webforms,.net-4.5,model-binding,Asp.net,.net,Webforms,.net 4.5,Model Binding,我正在尝试使用ASP.NET 4.5的模型绑定功能将ListView中显示的产品列表中的单个产品的详细信息加载到FormView控件中 所有这些都托管在单个ASPX页面中,该页面决定使用多视图控件显示哪个页面。在一个视图中,我有一个显示所有产品的ListView。在另一个视图中,我使用FormView控件来显示/编辑单个产品的详细信息。在ListView中单击单个产品记录时,我希望显示包含FormView的视图,并将该产品加载到FormView中进行编辑或查看 按照WebForms中模型绑定的指

我正在尝试使用ASP.NET 4.5的模型绑定功能将ListView中显示的产品列表中的单个产品的详细信息加载到FormView控件中

所有这些都托管在单个ASPX页面中,该页面决定使用多视图控件显示哪个页面。在一个视图中,我有一个显示所有产品的ListView。在另一个视图中,我使用FormView控件来显示/编辑单个产品的详细信息。在ListView中单击单个产品记录时,我希望显示包含FormView的视图,并将该产品加载到FormView中进行编辑或查看

按照WebForms中模型绑定的指导,我使用一个以ProductId为参数的方法定义了FormView的“SelectMethod”属性。此方法返回单个对应的产品对象。据我所知,在页面生命周期中的某个地方,会调用此方法并自动加载FormView

现在,当我单击ListView中的记录以查看其详细信息时,它将触发ItemCommand事件处理程序。事件处理程序使用所选记录中的产品Id并检索与此Id对应的产品

问题在于,我需要将该产品绑定到FormView。如何手动将产品指定为FormView绑定到的模型?当我尝试手动设置FormView的数据源时,会出现以下错误:

“当发生以下情况时,无法在“ProductForm”上定义DataSource或DataSourceID: 它使用模型绑定。”

有没有其他人有过类似的问题,并找到了解决方法

谢谢


G

无需手动分配产品,因为数据绑定为您处理这项工作

首先,确保在ListView的每一行中都有某种类型的按钮,命令名为Select:

<asp:ListView ID="ProductList" runat="server" DataKeyNames="Id" ItemType="Product" SelectMethod="GetProductList">
<ItemTemplate>
    <%# Item.Name %>
    <asp:Button ID="SelectButton" runat="server" CommandName="Select" />
</ItemTemplate>
</asp:ListView>

这就是您所需要做的,因为当单击Select按钮时,ListView的SelectedValue会更改,GetProduct方法会自动调用,FormView也会更新。

就是这样!我不知道“控制”属性。非常感谢。
public Product GetProduct([Control("ProductList")] int? id)
{
    if (id.HasValue)
    {
        return GetProductList().First(p => p.Id == id.Value);
    }
    return null;
}