Я новичок в ASP.NET MVC. Я только что создал классическое приложение MVCMovie. Теперь я хотел бы добавить дополнительные функции, только для учебы. Я сделал "SearchByGen"
Просмотр для поиска фильмов по жанрам: в представлении есть раскрывающийся список жанров и место DIV. Содержимое заполнителя загружается jQuery PartialView "SearchByGenGetResult"
, и все работает нормально.Маршрут-карта PartialView from View и ajax
Вопросов:
Это архитектура правильно?
Как можно сопоставить значения PartialView в URL, вызвав View (напр., Если при поиске
"horror"
по выбору DropDown Я хотел бы видеть в URL-то вроде"SearchByGen/horror"
, и я хотел бы чтобы правильно видеть результат и возможность DropDown выбранный доступ к странице с помощью"SearchByGen/horror"
)
Спасибо всем, теперь код:
Controller код:
public ActionResult SearchByGen()
{
//get the genres list
var totalGens = _repository.GetGenrs();
//put into List<SelectListItem> for @Dropdown it
List<SelectListItem> items = totalGens.Select(genere => new SelectListItem { Text = genere, Value = genere }).ToList();
//passing to the View
ViewBag.TotalGen = items;
return View();
}
public ActionResult SearchByGenGetResult(string gen)
{
//select movies by gen
var moviesByGen = _repository.GetByGen(gen);
//render partial view
return PartialView(moviesByGen);
}
Посмотреть SearchByGen
@model IEnumerable<MvcMovies.Models.Movie>
@{
ViewBag.Title = "Search By Gen";
}
<script src="@Url.Content("~/Scripts/jquery-1.7.1.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery-ui-1.8.20.js")" type="text/javascript"></script>
<link href="@Url.Content("~/content/themes/base/jquery-ui.css")" rel="Stylesheet" type="text/css" />
<script type="text/javascript">
$(document).ready(
function() {
var dropDownSelectedDefault = $("#TotalGen option:selected").text();
$("#viewPlaceHolder").load("/Movie/SearchByGenGetResult", { gen: dropDownSelectedDefault });
//$("input#search").click(
$("#TotalGen").change(
function() {
var dropDownSelected = $("#TotalGen option:selected").text();
$("#viewPlaceHolder").load("/Movie/SearchByGenGetResult", { gen: dropDownSelected });
}
);
}
);
</script>
<h2>Search By Gen</h2>
<div>
@Html.DisplayName("Genere ")
@Html.DropDownList("TotalGen")
</div>
<div id="viewPlaceHolder"></div>
Частичный вид SearchByGenGetResult (не показан классический подмости-лист View)
спасибо! Я изучу ваше решение. – DanB