我有一个名为“Program”的模型。每个节目都将拥有以下描述的播出时间表。
enum SchduleEnum { Daily = 0, Weekly, Monthly };
每个程序都可以有一个类别,比如“新闻”、“电影”、“讨论”。
在节目调度视图中,用户必须能够从下拉菜单中选择日程表。但是,在日程下拉菜单中应该有默认值。规则是,如果是“新闻”类别,则默认日程表应为“每日”。如果类别是“电影”,则默认日程表应为“每周”。如果类别是“讨论”,则默认日程表应为“每月”。
我有以下代码,它显示空白作为日程下拉菜单的默认值。我们如何修改代码以根据上述规则显示所需的默认值?
基于MVC原则:
UI逻辑属于视图,输入逻辑属于控制器,业务逻辑属于模型。
我们如何快速实现它?
我们如何按照上述MVC原则标准方式实现它?
public class Program
{
public int ProgramID { get; set; }
public string ProgramName { get; set; }
public int ScheduleID { get; set; }
public string ProgramCategory { get; set; }
}
控制器
namespace MyDefaultValueTEST.Controllers
{
public class MyProgramController : Controller
{
enum SchduleEnum { Daily = 0, Weekly, Monthly };
List<Program> programList = new List<Program>()
{
new Program
{
ProgramID = 1,ProgramName = "Program1",
ProgramCategory = "News"
},
new Program
{
ProgramID = 2,ProgramName = "Program2",
ProgramCategory = "Movie"
},
new Program
{
ProgramID = 3,ProgramName = "Program3",
ProgramCategory = "Discussion"
}
};
public ActionResult ScheduleProgram()
{
ViewBag.ScheudleEnum = GetSchduleSelectList();
return View(programList);
}
public static SelectList GetSchduleSelectList()
{
Array values = Enum.GetValues(typeof(SchduleEnum));
List<System.Web.UI.WebControls.ListItem> items = new List<System.Web.UI.WebControls.ListItem>(values.Length);
foreach (var i in values)
{
items.Add(new System.Web.UI.WebControls.ListItem
{
Text = Enum.GetName(typeof(SchduleEnum), i),
Value = ((int)i).ToString()
}
);
}
return new SelectList(items);
}
}
}
查看
@model IEnumerable<MyDefaultValueTEST.Program>
@{
ViewBag.Title = "ScheduleProgram";
}
<h2>ScheduleProgram</h2>
@using (Html.BeginForm())
{
<table>
<tr>
<th style="border:1px solid Teal; background-color:Gray">
ProgramName
</th>
<th style="border:1px solid Teal; background-color:Gray">
ProgramCategory
</th>
<th style="border:1px solid Teal; background-color:Gray"> </th>
</tr>
@Html.EditorForModel()
</table>
<p>
<input type="submit" value="Save Schedules" />
</p>
}
编辑器模板(Program.cshtml)
@model MyDefaultValueTEST.Program
<tr>
<td style="border:1px solid Teal">
@Html.EditorFor(x => x.ProgramName)
</td>
<td style="border:1px solid Teal">
@Html.EditorFor(x => x.ProgramCategory)
</td>
<td style="border:1px solid Teal">
@Html.DropDownListFor(x => x.ScheduleID, (SelectList)ViewBag.ScheudleEnum, String.Empty)
</td>
<td>
@Html.HiddenFor(x => x.ProgramID)
</td>
</tr>
阅读