2016-06-17 6 views
1
ViewBag.cliente_id = new SelectList(db.cliente.Where(c => c.status_ativacao == 1), "id", "nome", manutencao.cliente_id); 

Он все еще возвращает всех клиентов. Мне нужно вернуть только колонку «status_ativacao» = значение 1. Я уверен, что это делается здесь, или мне нужно сделать это в раскрывающемся списке?(Custom ViewBag with Where). Простая линия, но я не могу заставить ее работать

Вид:

<div class="form-group"> 
<label class="col-sm-2 control-label" for="cliente_id">Cliente</label> 
<div class="col-md-6"> 
    @Html.DropDownList("cliente_id", (SelectList)ViewBag.Values, new { onchange = "this.form.submit();" }) 
    @Html.ValidationMessageFor(model => model.cliente_id) 
<!-- <input type="submit" value="Atualizar Cliente" class="btn btn-default"/> --> 
</div> 

+1

The .Where() ', который вы указали, будет работать нормально и возвращать только' cliente', где значение 'status_ativacao' равно' 1' (однако размещение 'SelectList', как в' ViewBag', является плохой практикой, и нет смысла добавлять '@Html .ValidationMessageFor() ', потому что с вашей реализацией вы никогда не получите никакой валидации, и ваши пользователи не смогут выбрать первый элемент) –

ответ

1

Вы должны преобразовать этот запрос в список первых, как это:

ViewBag.cliente_id = new SelectList(db.cliente.Where(c => c.status_ativacao == 1).ToList(), "id", "nome", manutencao.cliente_id); 

Кроме того, изменить Html.DropDownList на ваш взгляд, как это:

@Html.DropDownList("cliente_id", (SelectList)ViewBag.cliente_id, new { onchange = "this.form.submit();" }) 
+0

, к сожалению, он не работает –

+0

Жаль, что слышу это. Я предполагаю, что вы настраиваете это в действии, как выглядит вид? –

+0

Я обновляю сообщение с видом. На самом деле спасибо –