c# - 绑定下拉列表 asp.net mvc
问题描述
我用我的数据库中的数据填充了一个下拉列表。但是,我不确定我的方法是否有效。我可以做些什么来改善这一点,或者我使用的方法是否安全/足够?
我在下面添加了控制器、viewModel 和 View。非常感谢所有建议!
控制器:
[HttpGet]
public ActionResult SchedulerIndex()
{
Entities entities = new Entities();
var getJobList = entities.Jobs.ToList();
SelectList list = new SelectList(getJobList, "JobId", "JobName");
ViewBag.jobListName = list;
[HttpPost]
public ActionResult ScheduleInfo(Values model, int JobList1, string Second, string Minute, string Hour, object DayOfMonth, object Month, object DaysOfWeek, int repeatTime)
{
model.Job = JobList1;
看法:
@using (Html.BeginForm("ScheduleInfo", "Scheduler", FormMethod.Post))
{
Html.EnableClientValidation();
<center>
<div style="text-align: center">
<div class="form-group">
<h4>Select a job from the list</h4>
@Html.DropDownList("JobList1", ViewBag.jobListName as SelectList)
</div>
</div>
</center>
视图模型:
public class Values
{
public List<object> DayOfMonth { get; set; }
public List<object> Month { get; set; }
public List<object> DaysOfWeek { get; set; }
[Required(ErrorMessage = "Enter a number between 0-59!")]
[RegularExpression(@"^(,{0,1}(\b\d\b|[0-5][0-9]|\*+)(-\b\d\b|-[0-5][0-9]){0,1})$", ErrorMessage = "Enter a number between 0-59!")]
public object Second { get; set; }
[Required(ErrorMessage = "Enter a number between 0-59!")]
[RegularExpression(@"^(,{0,1}(\b\d\b|[0-5][0-9]|\*+)(-\b\d\b|-[0-5][0-9]){0,1})$", ErrorMessage = "Enter a number between 0-59!")]
public object Minute { get; set; }
[Required(ErrorMessage = "Enter a number between 0-23!")]
[RegularExpression(@"^(,{0,1}(\b\d\b|[0-1][0-9]|[2][0-3]|\*+)(-\b\d\b|-[0-1][0-9]|-[2][0-4]){0,1})$", ErrorMessage = "Enter a number between 0-23!")]
public object Hour { get; set; }
//public List<SelectListItem> Jobs { get; set; }
public int Job { get; set; }
public List<Values> DofMInfo { get; set; }
public string DofMNo { get; set; }
public int DofMID { get; set; }
public List<Values> MonthInfo { get; set; }
public int monthID { get; set; }
public string monthName { get; set; }
public List<Values> DayInfo { get; set; }
public int dayID { get; set; }
public string dayName { get; set; }
[Required(ErrorMessage ="Enter the number of repeat times. 0 = execute once!")]
public int repeatTime { get; set; }
public bool IsChecked { get; set; }
}
解决方案
您现在的方式也可以,但不推荐,因为您使用 viewbag 来保留值并传递值,因此您需要创建如下所示的强类型模型。
在模型中创建一个新的 SelectListItem,如下所示,
public IEnumerable<SelectListItem> getJobList { get; set; }
在控制器中
将列表值分配给 getJoblist selectedlistitem 而不是 viewbag。
然后在视图中将模型数据与下拉列表绑定。
@Html.DropDownListFor(model => model.jobList1, Model.getJobList)
推荐阅读
- macos - 在 mac 中连接()到 unix:///tmp/web2py.socket 失败(13:权限被拒绝)
- css - web2py:增加智能网格中表名的字体大小
- angular - 在 mobiscroll.prompt 的输入字段中显示 mobiscroll 数字键盘
- php - 如何通过带 php 的条带 API 将订阅计划的发票和收据发送到客户电子邮件?
- mongodb - 如何在mongodb查询中查找不在值中
- python - 1列的条件语句以创建具有算术函数的另一列
- python - Python按一列分组并计算另一列的百分比
- android - 突然我的 App.js 文件和所有其他文件格式都更改为 App.js.djvut 和 ReactNative 应用程序刚刚超过
- amazon-web-services - 为什么 Vagrant 需要云提供商的虚拟盒子?
- ruby-on-rails - 我的旧创建联接表如何在没有索引的情况下工作?