Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 页面刷新后保留下拉框中的选定项_C#_Asp.net Mvc - Fatal编程技术网

C# 页面刷新后保留下拉框中的选定项

C# 页面刷新后保留下拉框中的选定项,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个下拉框,其中列出了用户可以选择的时间。我的问题是,在用户选择并点击提交按钮后,页面被刷新,然后下拉框再次设置为默认值-即使在重新加载页面后,如何让用户的选择保留在下拉框中?我不确定我的代码中最需要的部分是什么,我的Get和Post都很长,但是如果有一个通用的例子可以帮助我 来自控制器的代码: 下面是我加载到下拉框中的一个列表: IQueryable<User> users = _userRepository.FindAllForOffice(_currentUser.Offi

我有一个下拉框,其中列出了用户可以选择的时间。我的问题是,在用户选择并点击提交按钮后,页面被刷新,然后下拉框再次设置为默认值-即使在重新加载页面后,如何让用户的选择保留在下拉框中?我不确定我的代码中最需要的部分是什么,我的Get和Post都很长,但是如果有一个通用的例子可以帮助我

来自控制器的代码:

下面是我加载到下拉框中的一个列表:

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;