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();
    }
}

person user2315985    schedule 24.04.2013    source источник


Ответы (1)


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

public static IEnumerable<Product> GetProducts()

to

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

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

person PhilM    schedule 29.12.2013