Asp.net 4.5 WebForms ModelBinding не позволяет устанавливать выбранное значение в выпадающем списке

Я использую привязку модели Asp.net 4.5. У меня есть выпадающий список, который имеет метод выбора, который возвращает IEnumerable список продуктов. Все работает как положено. Однако, когда я попадаю на страницу, мне нужно проверить строку запроса и изменить выбранное значение в раскрывающемся списке (который связан с помощью метода 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();
    }
}

1 ответ

Я не эксперт, поэтому ваш пробег может отличаться. Но я думаю, что все, что вам нужно сделать, это изменить свое определение getProducts: с

public static IEnumerable<Product> GetProducts()

в

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

а затем используйте "param" для фильтрации вашего запроса

Другие вопросы по тегам