c# - 在 MVC 视图中更改 DropDownListFor 中 SelectList 的输出值
问题描述
我的表单中有这段代码:
<div class="form-group">
@Html.LabelFor(c => c.ClosingHourId)
@Html.DropDownListFor(c => c.ClosingHourId, new SelectList(Model.ClosingHours, "Id", "Time"), "Select time", new { @class = "form-control" })
@Html.ValidationMessageFor(c => c.ClosingHourId)
</div>
“时间”属性的类型是 DateTime,所以当我单击页面上的下拉列表时,我会看到完整的日期和时间,但问题是我只想显示小时数,没有日期,所以我想使用类似Time.ToString("H:mm")
但我不知道我在哪里可以写这个,所以它会起作用。也许正确的方法是[Display(Name = Time.ToString("H:mm"))]
在我的 ClosingHour 模型中添加注释之类的东西?我不确定这是否可能。
我的视图模型:
public class CinemaFormViewModel
{
public int? Id { get; set; }
[Required]
[StringLength(255)]
public string Name { get; set; }
[Required]
public string Address { get; set; }
[Required]
[Display(Name = "Total Seats")]
public int TotalSeats { get; set; }
public IEnumerable<OpeningHour> OpeningHours { get; set; }
[Required]
[Display(Name = "Opens At")]
public byte? OpeningHourId { get; set; }
public IEnumerable<ClosingHour> ClosingHours { get; set; }
[Required]
[Display(Name = "Closes At")]
public byte? ClosingHourId { get; set; }
}
我的 ClosingHour 模型:
public class ClosingHour
{
public byte Id { get; set; }
[Required]
public DateTime Time { get; set; }
}
控制器内部调用视图的操作:
public ActionResult New()
{
var openingHours = _context.OpeningHours.ToList();
var closingHours= _context.ClosingHours.ToList();
var viewModel = new CinemaFormViewModel
{
OpeningHours = openingHours,
ClosingHours = closingHours
};
return View("CinemaForm", viewModel);
}
解决方案
通过添加字符串时间属性来改变你
public class ClosingHour
{
public byte Id { get; set; }
[Required]
public DateTime Time { get; set; }
[NotMapped]
public string ShortTime { get; set; }
}
行动
public ActionResult New()
{
var closingHours= _context.ClosingHours.ToList();
var openingHours = _context.OpeningHours.ToList();
closingHours.ForEach(i=> i.ShortTime=i.Time.ToShortTimeString());
openingHours.ForEach(i=> i.ShortTime=i.Time.ToShortTimeString());
// or you can try
closingHours.ForEach(i=> {
i.ShortTime=i.Time.ToShortTimeString();
i.Time=null;
});
openingHours.ForEach(i=> {
i.ShortTime=i.Time.ToShortTimeString();
i.Time=null;
});
var viewModel = new CinemaFormViewModel
{
OpeningHours = openingHours,
ClosingHours = closingHours
};
return View("CinemaForm", viewModel);
}
看法
....
@Html.DropDownListFor(c => c.ClosingHourId,
new SelectList(Model.ClosingHours, "Id", "ShortTime"), "Select time", new { @class = "form-control" })
.....
推荐阅读
- javascript - 初始化前无法访问“X”
- javascript - 如何更改此代码,以便每次刷新浏览器时都不会删除
- apache-flink - Data Stream API 中的 Flink 迭代 - 缺点
- javascript - 查找数组中最接近的较小值
- javascript - 我的删除按钮功能有什么问题 - 反应
- python - Python tkinter 文本到边界问题
- android - 滚动已在 scichart android 中绘制的折线图时如何修复延迟
- javascript - 根据 ID 存在的特定性别数据拆分组合列表
- grails - 为什么类名长度为一时,生成的控制器中没有注入服务?
- python - 将每个元组与元组列表中的下一个元组合并