ListBox在提交页面时丢失选定的值

时间:2013-08-07 20:17:55

标签: asp.net-mvc asp.net-mvc-3

我在提交ListBoxFor控件中选择项目时遇到问题。我正在使用PagedListPager控件,当选择下一页时,ListBoxFor控件正在丢失所选值并抛出错误。

这是我的代码:

视图模型:

public IEnumerable<SelectListItem> FiscalYearsData { get; set };
public IEnumerable<int> SelectedYears { get; set; }

Controller(从存储库加载FiscalYearsData,如下所示):

fourteenStepStatusView.FiscalYearsData = 
projectRepository.GetFiscalYears.Select
(yr => new SelectListItem { Text = yr.ToString(), Value = yr.ToString()}).ToList();

查看:

@Html.ListBoxFor(model => model.SelectedYears, new      
MultiSelectList(Model.FiscalYearsData, "Value", "Text", Model.SelectedYears),  
new { @Id = "lstFiscalYears", @class = "ListBoxFor70Style", Multiple = "multiple", 
size = "3" })

任何人都可以帮我解决问题。我不确定我在这做什么错。

由于

2 个答案:

答案 0 :(得分:1)

嗯......是的页面链接只是标准的旧链接,导致浏览器为下一页发出GET请求。它不会每次发布您的表单。保留页面之间任何列表框选择的唯一方法是使用AJAX更新列表的后端版本,或者使用JavaScript来破坏页面链接上的查询字符串,以便在每次更改时包含选择。

像往常一样,更好的方法可能就是停下来并重新思考你想要实现的目标。美元到硬币有更好的方法。

答案 1 :(得分:0)

尝试以下任何一项:(两者都有效)

更改SelectedYears属性,如下所示

public IEnumerable<string> SelectedYears { get; set; }

OR

更改服务电话以获取会计年度,如下所示

fourteenStepStatusView.FiscalYearsData = projectRepository.GetFiscalYears.Select
(yr => new SelectListItem { Text = yr.ToString(), Value = (int)yr}).ToList()