显示模型到非剃须刀下拉列表

Displaying model to non razor dropdown list

是否可以在 cshtml 中显示普通 html 下拉列表的模型 或者我应该单独使用 ajax 吗?什么是最好的选择?

            @foreach (var item in Model)
            {
                <tr>            
                    <td>@Html.DisplayFor(modelItem => item.ReservationId)</td>
                    <td>@Html.DisplayFor(modelItem => item.ReservationStartDate)</td>
                    <td>@Html.DisplayFor(modelItem => item.ReservationEndDate)</td>
                    <td>@Html.DisplayFor(modelItem => item.ReservationAdult)</td>
                    <td>@Html.DisplayFor(modelItem => item.ReservationChildren)</td>
                    <td>@Html.DisplayFor(modelItem => item.ReservationRoomDesc)</td>
                    <td>@Html.DisplayFor(modelItem => item.ReservationRoomType)</td>
                    <td><select id="hotelroom" name="cs3" class="cs3 form-control input-small"></select></td>
                    <td>@Html.DisplayFor(modelItem => item.ReservationRoomStatus)</td>      
                    <td><input type="button" id="editTable"></td>
                </tr>
            }

您可以像其他任何标签一样使用 Razor 呈现 <option> 标签。

我假设您有一个 IEnumerable<SelectListItem> AvailableHotelRoomOptions 以及模型中的潜在选项。

<td>
    <select id="hotelroom" name="cs3" class="cs3 form-control input-small"> 
    @foreach(var selectListItem in Model.AvailableHotelRoomOptions) {
        @{ string selectedAttr = selectListItem.Selected ? "selected = \"selected\"" : string.Empty; }
        <option value="@selectListItem.Value" @selectedAttr>
            @selectListItem.Text
        </option>
    }
    </select>
</td>

PS:确保 <select> 的 Id 和 Name 属性与 MVC ModelBinder 预期的命名约定相匹配,以便可以绑定回来!

您可以像这样创建下拉列表:

@Html.DropDownListFor(
    modelItem => modelItem.AvailableHotelRoomOptions, 
    new SelectList(Model.AvailableHotelRoomOptions.Select(@r => @r.OptionName)),
    new { @id = "hotelroom", @class = "cs3 form-control input-small" }
)

或者像这样:

@Html.DropDownListFor(
    modelItem => modelItem.AvailableHotelRoomOptions, 
    new SelectList(Model.AvailableHotelRoomOptions, "OptionId", "OptionValue"),
    new { @id = "hotelroom", @class = "cs3 form-control input-small" }
)