У меня есть модель с именем Program. Каждая программа будет иметь расписание телепередач, как описано ниже.
enum SchduleEnum { Daily = 0, Weekly, Monthly };
Каждая программа может иметь такие категории, как «Новости», «Фильм», «Обсуждение».
В представлении «Планирование программ» пользователи должны иметь возможность выбирать расписание из раскрывающегося списка. Однако в раскрывающемся расписании должны быть значения по умолчанию. Правило состоит в том, что расписание по умолчанию должно быть «Ежедневно», если это категория «новости». Расписание по умолчанию должно быть «Еженедельно», если категория «Кино». Расписание по умолчанию должно быть «Ежемесячно», если категория «Обсуждение».
У меня есть следующий код, который показывает пустой как значение по умолчанию в раскрывающемся списке расписания. Как изменить код, чтобы он отображал требуемые значения по умолчанию на основе правил, определенных выше?
Основано на принципе MVC: The UI logic belongs in the view. Input logic belongs in the controller. Business logic belongs in the model.
Как мы можем быстро достичь этого?
Как нам добиться этого стандартным способом (следуя принципу MVC, указанному выше)
КОД
public class Program
{
public int ProgramID { get; set; }
public string ProgramName { get; set; }
public int ScheduleID { get; set; }
public string ProgramCategory { get; set; }
}
CONTROLLER
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);
}
}
}
VIEW
@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>
ЧТЕНИЕ
C # mvc 3 с использованием списка выбора с выбранным значением в представлении
раскрывающийся список устанавливает выбранное значение в MVC3 Razor
Страница макета MVC 3, шаблон бритвы и DropdownList
DropdownList для значения по умолчанию
Html.dropdownlist не сохраняет выбранное значение
Получение значений из выпадающего списка asp.net mvc
ASP.NET MVC ViewModel и DropDownList
нуль раскрывающегося значения при использовании, viewmodel & modelbinder в asp.net mvc
Поддержка optgroup в выпадающем списке .NET MVC?