2013-04-24 53 views
2

我正在使用Asp.net 4.5模型绑定。我有一个dropdownlist,它有一个select方法返回一个IEnumerable产品列表。一切都按预期工作。然而,当我降落在页面上,我需要检查查询字符串,并使用SelectMethod改变下拉列表的的SelectedValue(这是必然。Asp.net 4.5 WebForms ModelBinding不允许在dropdownlist上设置selectedvalue

通常我会简单地使用...

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      ddlProducts.SelectedValue = Request.QueryString["productid"]; 
     } 
    } 

那但是,当下拉列表绑定到SelectMethod(新的asp.net 4.5模型绑定)时不起作用。那么如何在页面上登陆时通过查询字符串设置下拉列表的selectedvalue?

ASPX(正常下拉列表但使用SelectMethod):

<asp:DropDownList ID="ddlProducts" runat="server" DataTextField="Description" DataValueField="ProductId" AppendDataBoundItems="True" SelectMethod="GetProducts"></asp:DropDownList> 

CS

public static IEnumerable<Product> GetProducts() 
{ 
    using (var db = new AppDb()) 
    { 
     return db.Products.OrderBy(x => x.Description).ToList().AsEnumerable(); 
    } 
} 

回答

0

我不是专家,所以你的里程可能会有所不同。 但我认为所有你需要做的就是改变你的getProducts的定义:从

public static IEnumerable<Product> GetProducts() 

public static IEnumerable<Product> GetProducts([QueryString("somequerystringvariablename")] string param) 

,然后使用“PARAM”过滤查询

相关问题