【问题标题】:Passing the value of a HTML list to EditorFor method OR directly to controller将 HTML 列表的值传递给 EditorFor 方法或直接传递给控制器
【发布时间】:2019-09-09 16:27:30
【问题描述】:

我正在为名为 Recipe 的表执行 CRUD。整个功能已经在 API 中创建,此时,我正在尝试在网页上实现它。在创建新配方期间,您必须填写一些字段,例如 TotalTimeUnitId。这是配方表中的一列,只接受整数;但是,在用户界面中,您必须从包含秒/分钟/小时的列表中进行选择,它们的值是需要通过控制器在数据库中传递的东西。

 <div class="form-group">
        @Html.LabelFor(model => model.TotalTimeUnitId)
        @Html.EditorFor(model => model.TotalTimeUnitId)
        @Html.ValidationMessageFor(model => model.TotalTimeUnitId)

        <select id="list" onchange="getSelectedtValue();">
            <option value="1">seconds</option>
            <option value="2">minutes</option>
            <option value="3">hours</option>
        </select>

        <script>
            function getSelectedtValue() {
                var selectedValue = document.getElementById("list").value;
                console.log(selectedValue);
            }
            getSelectedtValue();
        </script>

这是我为实现这一目标而编写的代码。如果您从列表中选择,比如说,分钟getSelectedValue() 函数会返回“2”。我怎样才能在 EditorFor 中调用此方法,以便为变量 TotalTimeUnitId 分配值?还有另一种方法可以做到这一点吗?

【问题讨论】:

  • 你不能只使用带有文本/值列表的DropDownListFor(model =&gt; model.TotalTimeUnitId, ...),而不是EditorFor吗?
  • 哦,它是这样工作的吗?我真的不知道如何使用 DropDownListFor 所以我就选择了这个解决方案。我会尝试一下并回来更新。

标签: c# html model-view-controller


【解决方案1】:
 @Html.DropDownListFor(
       model => model.TotalTimeUnitId,
       new SelectList(
              new List<Object>{
                   new { value = 1 , text = "Seconds"  },
                   new { value = 2 , text = "Minutes" },
                   new { value = 3 , text = "Hours"}
                },
              "value",
              "text",
               Model.TotalTimeUnitId
       )
    )

这完成了工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-19
    • 1970-01-01
    • 1970-01-01
    • 2016-10-13
    相关资源
    最近更新 更多