【发布时间】:2017-10-25 21:13:13
【问题描述】:
我曾在具有相同模型值的不同应用程序中使用此功能,但这次我遇到了问题。
我想要实现的是,当我在SelectList 中选择一个值时,另一个值中的值会发生变化。这目前不起作用。
假设我有以下模型:
public class DashboardChartsByMonthModel
{
...
public SelectList TimeSliceList { get; set; }
public TimeSlice TimeSliceVal { get; set; } // Timeslice is an Enum containing "ByMonth" and "ByQuarter"
public SelectList StartQuarterList { get; set; }
public string StartQuarter { get; set; }
public SelectList StartMonthList { get; set; }
public string StartMonth { get; set; }
public SelectList StartYearList { get; set; }
public string StartYear { get; set; }
....
public void SetDefaults()
{
...
TimeSliceList = new SelectList(new List<SelectListItem>
{
new SelectListItem {Selected = true, Text = "Monthly", Value = TimeSlice.ByMonth.ToString()},
new SelectListItem {Selected = false, Text = "Quarterly", Value = TimeSlice.ByQuarter.ToString()}
}, "Value", "Text");
}
StartQuarterList = new SelectList(new List<SelectListItem>
{
new SelectListItem {Selected = true, Text = "Q1", Value = "1"},
new SelectListItem {Selected = false, Text = "Q2", Value = "4"},
new SelectListItem {Selected = false, Text = "Q3", Value = "7"},
new SelectListItem {Selected = false, Text = "Q4", Value = "10"}
}, "Value", "Text");
StartMonthList = new SelectList(new List<SelectListItem>
{
new SelectListItem {Selected = true, Text = "January", Value = "1"},
new SelectListItem {Selected = false, Text = "February", Value = "2"},
new SelectListItem {Selected = false, Text = "March", Value = "3"},
new SelectListItem {Selected = false, Text = "April", Value = "4"},
new SelectListItem {Selected = false, Text = "May", Value = "5"},
new SelectListItem {Selected = false, Text = "June", Value = "6"},
new SelectListItem {Selected = false, Text = "July", Value = "7"},
new SelectListItem {Selected = false, Text = "August", Value = "8"},
new SelectListItem {Selected = false, Text = "September", Value = "9"},
new SelectListItem {Selected = false, Text = "October", Value = "10"},
new SelectListItem {Selected = false, Text = "November", Value = "11"},
new SelectListItem {Selected = false, Text = "December", Value = "12"}
}, "Value", "Text");
StartYearList = new SelectList(new List<SelectListItem>
{
new SelectListItem {Selected = false, Text = "2016", Value = "2016"},
new SelectListItem {Selected = true, Text = "2017", Value = "2017"}
}, "Value", "Text");
我认为,Razor(.cshtml) 页面具有以下内容:
<body>
....
<form method="post">
<h3>By Month or Quarter</h3>
<select id="TimeSlice" name="TimeSlice" asp-for="TimeSliceVal" asp-items="@Model.TimeSliceList"></select>
Start:<select id="StartMonth" name="StartMonth" asp-for="StartMonth" asp-items="@Model.StartMonthList"></select>
<select id="StartYear" name="StartYear" asp-for="StartYear" asp-items="@Model.StartYearList"></select>
....
有没有办法让它在第一个 SelectList 中的值是 Monthly 时,显示 MonthList 的值,反之亦然,这样当第一个框改变时,第二个框也会改变?
我能够在我的其他应用程序之一中解决此问题,但它非常麻烦,并且依赖于两个 SelectList 访问相同的模型属性。我想必须有更好的方法来做到这一点。
【问题讨论】:
-
@mjwills 我想解决这个客户端。这是我不想拥有的行为。
-
@AryanFirouzyan 我不确定这对我解决这个问题有何帮助。
-
抱歉问题不清楚(这是客户端问题)。忽略它。
标签: javascript c# asp.net-core