如何使用替代选定项设置和下拉列表 html 标记
本文关键字:设置 下拉列表 html 标记 何使用 | 更新日期: 2023-09-27 18:36:40
我创建了这个类来使用它进行分页,我正在尝试为每页的记录制作下拉列表并在刷新时保存值,我已经在 jquery 中做到了,但我想了解是否可以在没有 javascript 的情况下完成,只是为了好玩,默认值"15"我想让它动态化。属性 PageSize 具有列表的选定页面大小的当前值,我在控制器中设置了该值。
public class SortingPagingInfo
{
public string SortField { get; set; }
public string SortDirection { get; set; }
public int PageSize { get; set; }
public int PageCount { get; set; }
public int CurrentPageIndex { get; set; }
public int RecordCount { get; set; }
public SelectList ItemsPerPageList
{
get
{ return (new SelectList(new[] { "10", "15", "25", "50", "100", "1000" }
.Select(x => new {value = x, text = x}),
"value", "text", "15"));
}
}
}
在视图中:
@{
ViewBag.Title = "Socios";
SortingPagingInfo info = ViewBag.SortingPagingInfo;}
<td>@Html.DropDownList("ItemsPerPage", info.ItemsPerPageList, new { @id = "ItemsPerPageList" })</td>
@Html.Hidden("PageSize", info.PageSize)
我想将该行更改为类似 @Html.DropDownList("ItemsPerPage", info.ItemsPerPageList, new { @id = "ItemsPerPageList" }, new {@selected = info.页面大小})我知道这是错误的=)只是一个例子。
然后我有这个 javascript 用于提交下拉更改:
$("#ItemsPerPageList").change(function (evt) {
$("#PageSize").val(evt.target.value);
evt.preventDefault();
$("form").submit();
});
在控制器中:
[HttpPost]
public ActionResult Index(SortingPagingInfo info)
{
...
ViewBag.SortingPagingInfo = info;
return View(persona.ToList());
}
我知道我可以在 js 中做到这一点(它正在工作),只需在页面加载中使用此简单的行:
$("#ItemsPerPageList").val($("#PageSize").val());
解决我的问题,但不是问题的答案:
我所做的是修改类以具有默认值的页面大小的私有属性,稍后可以在视图中进行更改:
public class SortingPagingInfo
{
public string SortField { get; set; }
public string SortDirection { get; set; }
public int PageSize
{
get { return _pageSize; }
set { _pageSize = value; }
}
private int _pageSize = 15;
public int PageCount { get; set; }
public int CurrentPageIndex { get; set; }
public int RecordCount { get; set; }
public SelectList ItemsPerPageList
{
get { return (new SelectList(new[] { "10", "15", "25", "50", "100", "1000" }
.Select(x => new {value = x, text = x}),
"value", "text", _pageSize));
}
}
}
现在在控制器操作结果(不是 http 帖子)中,我可以修改信息。页面大小以替换默认大小。
您需要
发布到保存此值SortingPageInfo
上的实际属性:
@Html.DropDownListFor(m => info.PageSize, info.ItemsPerPageList, ...)
然后,下拉列表将自动选择为该属性设置的任何内容。目前的问题是您没有以任何方式通过帖子保留所选值。