Как я могу динамически добавить новую сущность в мой Htmlhelper.dropdownlist - PullRequest
0 голосов
/ 12 марта 2012

У меня есть следующий метод действия, который инициировал SelectList следующим образом: -

        public PartialViewResult Search(string q, int q2,string q3,string sortOrder)
    {

    ViewBag.q2 = new SelectList(elearningrepository.FindAllLevels().ToList(), "DifficultyID", "Description", 2);
    ViewBag.q3 = new SelectList(elearningrepository.FindAllusers().ToList(), "UserID", "UserID",2);
    ViewBag.today = DateTime.Today;
    ViewBag.nextmonth = DateTime.Now.AddMonths(1);
    var v = elearningrepository.searchquestions3(q, q2, q3);
     return PartialView("_searchquestion", v);
        }

И следующий метод хранилища: -

 public IQueryable<Question> searchquestions3(string q, int? q2 , string) 
            { 

   return from u in entities1.Questions 
   where (u.Description.Contains(q) && (u.DifficultyID == q2 || q2 == "Any" )  && ( u.CreatedBy == q3 || q3 == "Any"))                         
select u;}

затем в представлении я отображаю раскрывающийся список следующим образом: -

<th>
@Html.DropDownList("q2")        
</th>
 </tr>
  <tr>
<th>
Seach By Create By:-
</th>
<th>
@Html.DropDownList("q3")
</th>

Но как я могу добавить новое значение, представляющее слово «Any», в выпадающие списки q2 и q3, чтобы метод хранилища работал как положено? BR

Ответы [ 3 ]

2 голосов
/ 12 марта 2012

Прежде всего, я бы посоветовал вам использовать ViewModels, когда вы работаете с более сложными объектами. Конечно, вы можете добиться этого с помощью ViewBag, но это грязно.

Теперь. В действии вы можете сделать:

var list = elearningrepository.FindAllLevels().ToList()
list.InsertAt(0, new TypeOfYourObject() {ValueProperty = "Any"});
ViewBag.q2 = new SelectList(list, "DifficultyID", "Description", 2);

Вы можете поступать адекватно с остальными, но серьезно подумайте о строго типизированной ViewModel.

0 голосов
/ 12 марта 2012

Клиентское решение с Jquery

$("#Select_Id").append("<option value='0'>Text</option>");

Вы можете использовать .prepend (), если хотите добавить его в качестве первого элемента.

0 голосов
/ 12 марта 2012
@Html.DropDownList("q3","Any")

Вам необходимо использовать опцию Label

в вашем контроллере вы получите свой пост.

Все, что вы хотите сделать, пример. транзакцию базы данных, делать только если значение == пустая строка или метка == «Любой»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...