Asp.net mvc MVC设置dropdownlist的选定项时出现问题
在我的控制器中,我设置SelectedYear字段如下:Asp.net mvc MVC设置dropdownlist的选定项时出现问题,asp.net-mvc,Asp.net Mvc,在我的控制器中,我设置SelectedYear字段如下: [Authorize(Roles = "Administrator, AdminAccounts")] public ActionResult BankHoliday(int? id) { BankHolidayViewModel BankHolidayViewModel = new BankHolidayViewModel(); int year = DateTime.Now.Year; if (id.HasV
[Authorize(Roles = "Administrator, AdminAccounts")]
public ActionResult BankHoliday(int? id)
{
BankHolidayViewModel BankHolidayViewModel = new BankHolidayViewModel();
int year = DateTime.Now.Year;
if (id.HasValue)
year = id.GetValueOrDefault();
BankHolidayViewModel.SelectedYear = year;
BankHolidayViewModel.GetYearData(year);
return View(BankHolidayViewModel);
}
public class BankHolidayViewModel
{
public IList<BankHolidayExtended> BankHolidays { get; set; }
public IList<BankHolidayYear> Years { get; set; }
public int SelectedYear = DateTime.Now.Year;
public IEnumerable<SelectListItem> YearList
{
get
{
return this.Years.Select(item => new SelectListItem
{
Text = item.Year.ToString(),
Value = item.Year.ToString()
});
}
}
每当我单步执行代码时,return语句中的SelectedYear值总是正确的。在下面的年份下拉列表中,这是在下拉列表中设置所选项目的值字段
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/AdminAccounts.master" Inherits="System.Web.Mvc.ViewPage<SHP.WebUI.Models.BankHolidayViewModel>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
BankHoliday
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="AdminAccountsContent" runat="server">
<h3>Bank Holiday Administration</h3>
<p>Select the year: <%: Html.DropDownListFor(model => model.SelectedYear, Model.YearList)%></p>
<script language="javascript" type="text/javascript">
$(function () {
$("#SelectedYear").change(function () {
var year = $("#SelectedYear").val();
$("#wholepage").load("/AdminAccounts/BankHoliday/" + year);
});
});
银行假日
银行假日管理
选择年份:model.SelectedYear,model.YearList)%>
$(函数(){
$(“#SelectedYear”)。更改(函数(){
var year=$(“#SelectedYear”).val();
$(“#wholepage”).load(“/AdminAccounts/BankHoliday/”+年);
});
});
*编辑:添加信息*
《年度清单》的定义如下:
[Authorize(Roles = "Administrator, AdminAccounts")]
public ActionResult BankHoliday(int? id)
{
BankHolidayViewModel BankHolidayViewModel = new BankHolidayViewModel();
int year = DateTime.Now.Year;
if (id.HasValue)
year = id.GetValueOrDefault();
BankHolidayViewModel.SelectedYear = year;
BankHolidayViewModel.GetYearData(year);
return View(BankHolidayViewModel);
}
public class BankHolidayViewModel
{
public IList<BankHolidayExtended> BankHolidays { get; set; }
public IList<BankHolidayYear> Years { get; set; }
public int SelectedYear = DateTime.Now.Year;
public IEnumerable<SelectListItem> YearList
{
get
{
return this.Years.Select(item => new SelectListItem
{
Text = item.Year.ToString(),
Value = item.Year.ToString()
});
}
}
公共类BankHolidayViewModel
{
公共IList银行假日{get;set;}
公共IList年{get;set;}
public int SelectedYear=DateTime.Now.Year;
公共数字年表
{
得到
{
返回this.Years.Select(项目=>new SelectListItem
{
Text=item.Year.ToString(),
Value=item.Year.ToString()
});
}
}
*结束编辑*
由于某些原因,在呈现视图时,dropdownlist中没有选定的项目。如何解决此问题?您的“继承”需要继承您的ViewModel
Inherits="System.Web.Mvc.ViewPage<ViewModels.BankHolidayViewModel>"
编辑
在视图中,您可以设置所选值:
<%= Html.DropDownListFor(x => x.SelectedYear, new SelectList(Model.YearList, "Value", "Text", Model.SelectedYear))%>
然后当您返回视图时
return View(new BankHolidayViewModel(year));
我真的不想将我的对象更改为SelectList,尽管我确信这会起作用。 相反,我通过改变getter得到了答案
public IEnumerable<SelectListItem> YearList
{
get
{
return this.Years.Select(item => new SelectListItem
{
Text = item.Year.ToString(),
Value = item.Year.ToString(),
Selected = item.Year == this.SelectedYear
});
}
}
public IEnumerable年鉴
{
得到
{
返回this.Years.Select(项目=>new SelectListItem
{
Text=item.Year.ToString(),
Value=item.Year.ToString(),
所选=项目。年份==此。所选年份
});
}
}
确实如此,但在发布时它被截断了。因此我的inherits子句看起来像;inherits=“System.Web.Mvc.ViewPage”您是如何声明和设置您的年鉴的?我已经输入了额外的信息。因此可能需要对其进行格式化以使其更易于阅读。突出显示代码并按Ctrl-K或按带有二进制的按钮以对其进行格式化。您还可以使用`