Asp.net 4.5 モデル バインディングを使用しています。製品のIEnumerableリストを返すselectメソッドを持つドロップダウンリストがあります。すべてが期待どおりに機能します。ただし、ページにアクセスしたら、クエリ文字列を確認し、ドロップダウン リストの選択値を変更する必要があります (SelectMethod.
通常、私は単に使用します...
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ddlProducts.SelectedValue = Request.QueryString["productid"];
}
}
ただし、ドロップダウンリストが SelectMethod (新しい asp.net 4.5 モデルバインディング) にバインドされている場合は機能しません。では、ページにアクセスしたときにクエリ文字列を介してドロップダウンリストの選択された値を設定するにはどうすればよいでしょうか?
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();
}
}