【发布时间】:2015-10-23 08:13:09
【问题描述】:
我是 ASP.NET MVC 的新手。
我刚刚创建了一个经典的 MVCMovie 应用程序。
现在,我想添加更多功能,仅供学习。
我做了一个"SearchByGen" 视图来按类型搜索电影:在视图中有一个类型的下拉列表和一个 DIV 占位符。占位符的内容由 jQuery 通过 PartialView "SearchByGenGetResult" 加载,一切正常。
问题是:
架构正确吗?
如何通过调用视图在 URL 中映射 PartialView 的值(例如,如果我通过 DropDown 选择搜索
"horror",我希望在 URL 中看到类似"SearchByGen/horror"的内容,我想正确地看到结果和选择的下拉选项通过"SearchByGen/horror"访问页面)
谢谢大家,现在是代码:
控制器代码:
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(未显示,经典脚手架列表视图)
【问题讨论】:
标签: jquery asp.net asp.net-mvc routes asp.net-mvc-partialview