Работа с MVC, Sql и бритвой (cshtml) - PullRequest
0 голосов
/ 31 марта 2012

Прежде всего, я новичок в этом, поэтому, пожалуйста, держитесь со мной .. У меня есть выпадающий список, который заполняется сервером SQL, я использую Visual Studio 2010, cshtml, с бритвой, а также использую шаблон MVC для созданияэтот проект.То, что я пытаюсь сделать, - это когда кто-то выбирает значение из раскрывающегося списка при изменении, он обновляет страницу информацией об этой книге.

Мне нужна помощь по трем нижеприведенным вопросам. Любой совет был бы полезен:

  1. пользователь выбирает книгу из выпадающего списка, как вернуть Название книги обратно в контроллер
  2. Сервер (получить информацию с сервера о книге) и
  3. Вернуться к просмотру для отображения.

Я начал с того, что выполнил раскрывающийся список.

Мой взгляд выглядит следующим образом

BookName: @Html.DropDownList("BookName", ViewData["BookName"] as IEnumerable<SelectListItem>, new { id = "UserSelectedValue" })

Мой контроллер:

public ActionResult Index()
    {
       ViewData["BookName"] = new SelectList(_context.BookName.Select(a => a.Book_Name).Distinct());
                    return View();
    }

1 Ответ

3 голосов
/ 31 марта 2012

Выпадающий список не может привести к тому, что страница будет отправлена ​​обратно на ваш контроллер самостоятельно. Вам нужно сделать одну из двух вещей:

  1. Добавьте кнопку отправки, чтобы пользователь изменил раскрывающийся список, а затем щелкнул кнопку, чтобы просмотреть результаты.
  2. Используйте javascript для отправки формы на событие изменения элемента.

В любом случае вам нужно обернуть кнопку выпадающего списка / отправить в форму.

Вариант 1

<form>
    BookName: @Html.DropDownList("BookName", ViewData["BookName"] as  IEnumerable<SelectListItem>, new { id = "UserSelectedValue" })
    <input type="submit" value="Show results" />
</form>

Вариант 2

<script type="text/javascript">
    // assuming you're using jQuery
    $(function() {
        $('#UserSelectedValue').change(function() {
            $(this).parent('form').submit();
        });
    });
</script>    
<form>
    BookName: @Html.DropDownList("BookName", ViewData["BookName"] as  IEnumerable<SelectListItem>, new { id = "UserSelectedValue" })
    <input type="submit" value="Show results" />
</form>

Ваш код контроллера станет примерно таким:

public ActionResult Index(string bookName)
{
   ViewData["BookName"] = new SelectList(_context.BookName.Select(a => a.Book_Name).Distinct());

   if (!string.IsNullOrWhiteSpace(bookName))
   {
       ViewData["Books"] = _context.BookName.Where(b => b.Book_Name == bookName).ToList();
   }
   return View();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...