首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以将一个值传递给转发器的SelectMethod吗?

可以将一个值传递给转发器的SelectMethod吗?
EN

Stack Overflow用户
提问于 2012-10-10 01:01:16
回答 4查看 7.5K关注 0票数 12

ASP.Net 4.5引入了通过SelectMethod属性将数据绑定到Repeater等控件的新方法:

代码语言:javascript
复制
<asp:Repeater runat="server" ItemType="MyData.Reference" 
      SelectMethod="GetReferences">

调用Codebehind方法

代码语言:javascript
复制
public IEnumerable<Reference> GetReferences()

在嵌套中继器的场景中,是否可以以某种方式将一个参数传递给这个select方法,以便它根据外部中继器的项获取不同的数据?

示例:

代码语言:javascript
复制
<asp:Repeater runat="server" ItemType="MyData.Reference" 
        SelectMethod="GetReferences(Item.ID)">

应该打电话给我

代码语言:javascript
复制
public IEnumerable<Reference> GetReferences(int id)

我知道这可以通过ItemDataBound事件来实现,但我想使用SelectMethod和ItemType更简单、更干净的语法。

SelectMethod允许以某种方式传递参数吗?

如果不是,有没有另一种干净的方法可以从我的SelectMethod中的外部Repeater项中获取值?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-10-10 02:57:23

在等待答案的过程中,我尝试了一下,找到了以下解决方案。

这可能不是最好的方法,但到目前为止,我还没有发现它有任何问题,而且它非常简单,所以我就把它扔出去。

代码语言:javascript
复制
<asp:Repeater runat="server" ItemType="MyData.Reference" 
     DataSource='<%# GetReferences(Item.ID) %>'>

本质上,我在这里做的是用DataSource替换SelectMethod (智能感知不会建议这样做,但它仍然可以工作)。

这样,我就可以将一个值传递给GetReferences方法,然后将返回值用于模型绑定。

到目前为止,这是我遇到的最短的解决方案。

票数 9
EN

Stack Overflow用户

发布于 2013-02-15 21:31:47

下面是你如何做到这一点:

在外部中继器中,放置一个隐藏字段,并为内部中继器命名一个selectmethod:

代码语言:javascript
复制
<asp:Repeater SelectMethod="GetTopLevelStuff">
   <ItemTemplate>       
       <asp:HiddenField runat="server" ID="ItemId" Value="<%# Item.ID %>"/>
       <asp:Repeater SelectMethod="GetSubItems">
           <ItemTemplate>Template code for sub-items here</ItemTemplate
       </asp:Repeater>
   </ItemTemplate
</asp:Repeater>

然后,这里是没有很好记录的魔术:

代码语言:javascript
复制
 public IQueryable<SubItem> GetSubItems([Control("ItemId")] int itemId)
    {
        return yourDataStore.GetSubItems(itemId);
    } 

这种情况下的valueprovider还可以接受一个属性名,这在使用列表框获取"SelectedValue“时很有用。

我找到了你的问题,像你一样做了,然后我尝试了这个解决方案,它同样有效,但看起来更干净,更符合概念的想法。

票数 6
EN

Stack Overflow用户

发布于 2012-10-10 02:15:48

请看一下Exercise 1: Model Binding in ASP.NET Web Forms -> Task 3 – Value Providers in Model Binding教程。

可以在SelectMethod签名中定义某种控制选择参数。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12804875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档