Keeping selected item from dropdown box after page refresh
I have a dropdown box with a list of times for the user to choose from. My problem is that after the user picks开发者_JS百科 their choice and then hits the submit button, the page is refreshed and then the dropdown box is set to default again - how can i have the users choice stay in the dropdown box even after a page reload? I am not sure what part of my code is needed best my Get and Post are long - but if there is a general example that would help.
CODE FROM CONTROLLER:
Here is one of my lists i load into the dropdown box:
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");
}
This is adding to the actual dropdown:
userViewModel.ViewData = viewData.ToSelectList("Value", "Key",
userViewModel.Value);
return View("UserSummary", userViewModel);
ON MY ASPX.CS page i have the following:
Page_Load
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);
}
I didn't add all the initialization for all the elements - didn't think it is really needed for this situation
Thanks
Check this odetocode.com article out.
To keep the selected value after a manual refresh, you could use a cookie, for example jquery.cookie
. You would have to save the selected value on change and retrieve the value on page load.
I actually found a solution which was really simple and i guess i was overlooking it. I found that the same way i was passing in the values of the dates i could pass the value of the selected view type and it will remain in dropdown box until changed rather than changing after every page load. I made the additions in my CONTROLLER file in my Get method after the button click.
this is my Post:
[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
});
}
And this is my Get:
[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;
.........
The code continues but this is the main part.
精彩评论