C# 页面刷新后保留下拉框中的选定项
我有一个下拉框,其中列出了用户可以选择的时间。我的问题是,在用户选择并点击提交按钮后,页面被刷新,然后下拉框再次设置为默认值-即使在重新加载页面后,如何让用户的选择保留在下拉框中?我不确定我的代码中最需要的部分是什么,我的Get和Post都很长,但是如果有一个通用的例子可以帮助我 来自控制器的代码: 下面是我加载到下拉框中的一个列表:C# 页面刷新后保留下拉框中的选定项,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个下拉框,其中列出了用户可以选择的时间。我的问题是,在用户选择并点击提交按钮后,页面被刷新,然后下拉框再次设置为默认值-即使在重新加载页面后,如何让用户的选择保留在下拉框中?我不确定我的代码中最需要的部分是什么,我的Get和Post都很长,但是如果有一个通用的例子可以帮助我 来自控制器的代码: 下面是我加载到下拉框中的一个列表: IQueryable<User> users = _userRepository.FindAllForOffice(_currentUser.Offi
IQueryable<User> users = _userRepository.FindAllForOffice(_currentUser.OfficeId);
userViewModel.Users = users.ToSelectList("UserId", "FullName",
userViewModel.UserId.ToString());
foreach (SelectListItem view in userViewModel.Users)
{
if (!viewData.ContainsKey(view.Text))
viewData.Add(view.Text, view.Value + "|user");
}
在我的ASPX.CS页面上,我有以下内容:
页面加载
string viewType = null;
if(!String.IsNullOrEmpty(Request.QueryString["viewType"]))
{
viewType = Request.QueryString["viewType"];
}
if(!IsPostBack)
{ if (viewType == "user")
{
viewParams.Add("ViewName", "User Report");
var reportDataSource =
_userService.GetUsersReportData(beginDate, endDate, id);
reportViewer.Initialize("UserIndividual.rdlc",
new List<ReportDataSource> {reportDataSource}, viewParams);
}
string viewType=null;
如果(!String.IsNullOrEmpty(Request.QueryString[“viewType”]))
{
viewType=Request.QueryString[“viewType”];
}
如果(!IsPostBack)
{if(viewType==“用户”)
{
添加(“视图名称”、“用户报告”);
var报告数据源=
_GetUsersReportData(beginDate、endDate、id);
reportViewer.Initialize(“UserIndividual.rdlc”,
新列表{reportDataSource},viewParams);
}
我没有为所有的元素添加所有的初始化——我不认为这种情况真的需要它
谢谢退房
要在手动刷新后保留所选值,可以使用cookie,例如
jquery.cookie
。您必须在更改时保存所选值,并在页面加载时检索值。我实际上找到了一个非常简单的解决方案,我想我忽略了它。我发现传递val的方式与传递val的方式相同我可以传递所选视图类型的值的日期的ues,它将保留在下拉框中,直到更改,而不是在每次页面加载后更改。
单击按钮后,我在Get方法的控制器文件中添加了这些内容
这是我的帖子:
[HttpPost]
public ActionResult ResultSummary(ResultSummaryViewModel resultSummaryViewModel)
{
if (!ModelState.IsValid)
return View("ResultSummary", resultSummaryViewModel);
return RedirectToAction("ResultSummary",
new
{
beginDate = resultSummaryViewModel.BeginDate,
endDate = resultSummaryViewModel.EndDate,
value = resultSummaryViewModel.Value
});
}
这是我的收获:
[HttpGet]
public ActionResult ResultSummary(DateTime? beginDate = null, DateTime? endDate = null, string value="")
{
var resultSummaryViewModel = new ResultSummaryViewModel();
resultSummaryViewModel.BeginDate = beginDate;
resultSummaryViewModel.EndDate = endDate;
resultSummaryViewModel.Value = value;
代码仍在继续,但这是主要部分。您是使用
SelectListItem
填充下拉列表,还是自己手动构建下拉列表?请提供一个代码示例,以便更好地为您提供响应。@Tejs-是的,我使用SelectListItem,并在上面添加了一些代码。谢谢!这几乎不像ASP.NET MVC。…在你看来,你是在调用Html.DropDownList
还是在编写你自己的代码?我很想看看。你是说按F5刷新页面吗?@Dutch是的-我是说刷新我真的很喜欢这个例子谢谢Dutch。但我没有使用IEnumarable,所以我会看到一个接近的替代方案。再次感谢我确信我会参考这个例子未来。IQueryable是一个IEnumerable,SelectList是一个IEnumerable,userViewModel。Users也是一个IEnumerable。
[HttpGet]
public ActionResult ResultSummary(DateTime? beginDate = null, DateTime? endDate = null, string value="")
{
var resultSummaryViewModel = new ResultSummaryViewModel();
resultSummaryViewModel.BeginDate = beginDate;
resultSummaryViewModel.EndDate = endDate;
resultSummaryViewModel.Value = value;