c# - Razor View 中 int 的 mvc 下拉绑定(bind)

标签 c# html razor drop-down-menu asp.net-mvc-5

我有一个带有整数的域/实体对象:

public Int32 HoursToWait {get;set;}

我在我的 View 模型中放了同样的东西:

public Int32 HoursToWait {get;set;}

<select id="HoursToWait" name="HoursToWait">
    <option value="1">1</option>
    <option value="6">6</option>
    <option value="12" selected="selected">12</option>
    <option value="12">24</option>
    <option value="12">36</option>
    <option value="12">48</option>
    <option value="12">72</option>
</select>

问题的症结在于我的实体模型是一个整数。我想将其显示为下拉列表,只允许选择特定的时间。而且,一旦选择,我想在下次显示时默认它。

上面的代码“有效”,但它被硬编码为默认为 12,所以它很老套,如果用户更改 HoursToWait 值,则在重新加载时它会回到 12。

所以主要的问题是我应该使用哪种 View 模型属性和 Razor 元素来处理这个问题?

最佳答案

您的 View 模型将包含 HoursToWait 的属性和用于选择值的 SelectList。请注意,我假设您在 html 中有拼写错误并且选项值应该与文本匹配(目前您有 5 个选项 value="12")

public class MyViewModel
{

  public int HoursToWait { get; set;}
  public SelectList HoursToWaitList { get; set; }
}

在 Controller 的 GET 方法中

List<int> hours = new List<int>{ 1, 6, 12, 24, 36, 48, 72 };
MyViewModel model = new MyViewModel()
{
  HoursToWait = 12, // set the default selection (based on the existing value in the db)
  HoursToWaitList = new SelectList(hours);
}

在 View 中

@model MyViewModel
@using (Html.BeginForm())
{
  @Html.DropDownListFor(m => m.HoursToWait, Model.HoursToWaitList, "-Please select-")
  <input type="submit" ... />
}

关于c# - Razor View 中 int 的 mvc 下拉绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32404108/

相关文章:

c# - 日历数据库架构的最佳实践?

javascript - 以流方式从 HTTP 服务器接收 Web 浏览器中的二进制数据

数据页面的 HTML 结构语义

c# - 使用 Ternary 在 Razor 中设置元素颜色样式?运算符(operator)

c# - 在 WinForms 中嵌入 XNA

c# - 以编程方式刷新工作表中的特定公式

c# - 使用 struct 强制验证内置类型的优缺点

相同大小的 HTML 表格列

asp.net - 中止/跳过/取消 Razor View 的渲染

javascript - 如何使用jquery函数结果作为html.action中的参数link