MVC 3布局页面,剃刀模板和DropdownList
我想在网站的所有页面中包含年份的下拉列表。 我假设把这个逻辑放在布局页面(_layout.cshtml)的好地方。 如果用户更改年份,我想更改我的年份会话(ModelBinder)以更改。 这对于ASP.NET Web表单来说非常简单,但在MVC中似乎几乎不可能。 我尝试了一个没有运气的局部视图。 任何人有任何想法?
像往常一样,您可以从定义视图模型开始:
public class YearsViewModel { public string Year { get; set; } public IEnumerable<SelectListItem> Years { get { return new SelectList( Enumerable.Range(1900, 112) .OrderByDescending(year => year) .Select(year => new SelectListItem { Value = year.ToString(), Text = year.ToString() } ), "Value", "Text"); } } }
然后一个控制器:
public class YearsController : Controller { public ActionResult Index() { return View(new YearsViewModel()); } [HttpPost] public ActionResult Index(int year) { // TODO: do something with the selected year return new EmptyResult(); } }
以及索引操作的相应视图:
@model SomeAppName.Models.YearsViewModel @{ Layout = null; } @Html.DropDownListFor(x => x.Year, Model.Years)
最后在你的_Layout.cshtml
里面你可以使用这个控制器:
<div id="selectyear">@Html.Action("index", "years")</div>
并附加一个相应的脚本,当值发生变化时会发送一个AJAX请求:
$(function () { $('#selectyear select').change(function () { $.post('@Url.Action("index", "years")', { year: $(this).val() }, function (result) { }); }); });
- 我想了解@ Html.DisplayFor(modelItem => item.FirstName)中的lambdaexpression式
- 如何将Web API添加到现有的ASP.NET MVC 4 Web应用程序项目?
- asynchronousPartialView导致“HttpServerUtility.Execute阻止…”exception
- 无法加载文件或程序集“System.Web.Mvc”
- 如何“失效”ASP.NET MVC输出caching的部分?
- 防止在api中序列化属性
- 调用@ Html.Partial来显示属于不同控制器的局部视图
- 如何使用getJSON,使用post方法发送数据?
- 无法find所需的.Net框架数据提供程序。 它可能没有安装。 – 当遵循mvc3 asp.net教程