gpt4 book ai didi

asp.net-mvc - MVC 3布局页面,Razor模板和DropdownList

转载 作者:行者123 更新时间:2023-12-03 08:33:10 24 4
gpt4 key购买 nike

我想在我网站的所有页面中包括年份的下拉列表。我认为放置此逻辑的好地方是在布局页面(_layout.cshtml)中。如果用户更改了年份,我也想更改我的年份 session (ModelBinder)。使用ASP.NET Web表单是如此容易,但是在MVC中似乎几乎不可能做到。我尝试了部分观点,没有运气。有人有什么想法吗?

最佳答案

像往常一样,您可以从定义 View 模型开始:

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");
}
}
}

然后是一个 Controller :
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();
}
}

以及索引操作的相应 View :
@model SomeAppName.Models.YearsViewModel
@{
Layout = null;
}
@Html.DropDownListFor(x => x.Year, Model.Years)

最后在 _Layout.cshtml中,您可以使用以下 Controller :
<div id="selectyear">@Html.Action("index", "years")</div>

并附加一个相应的脚本,当值更改时,该脚本将发送AJAX请求:
$(function () {
$('#selectyear select').change(function () {
$.post('@Url.Action("index", "years")', { year: $(this).val() }, function (result) {

});
});
});

关于asp.net-mvc - MVC 3布局页面,Razor模板和DropdownList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4674033/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com