从选择下拉列表中检索对象

Posted

技术标签:

【中文标题】从选择下拉列表中检索对象【英文标题】:Retrieve object from select drop down list 【发布时间】:2021-12-13 10:51:37 【问题描述】:

我正在尝试从这个剃须刀页面中的最后一个表单组返回一个 meetingSpace 对象:

<form method="post">
    <input type="hidden" asp-for="Booking.Id" />
    <div class="form-group">
        <label asp-for="Booking.Name"></label>
        <input asp-for="Booking.Name" class="form-control" />
        <span class="text-danger" asp-validation-for="Booking.Name"></span>
    </div>

    <div class="form-group">
        <label asp-for="Booking.Start">Start</label>
        <input asp-for="Booking.Start" class="form-control" />
        <span class="text-danger" asp-validation-for="Booking.Start"></span>
    </div>
    <div class="form-group">
        <label asp-for="Booking.Duration">Duration</label>
        <input asp-for="Booking.Duration" class="form-control" />
        <span class="text-danger" asp-validation-for="Booking.Duration"></span>
    </div>

    <div class="form-group">
        <label asp-for="Booking.MeetingSpace">Room</label>
        <select data-value="true" data-va-required="The meeting space field is required" id="MeetingSpace.Id" name="MeetingSpace.Name">
            @foreach (var meetingSpace in Model.meetingSpaces)
            
                <option value="meetingSpace">@meetingSpace.Name</option>
            
        </select>
    </div>


    <button type="submit" class="btn btn-primary">Save</button>
</form>

我不确定如何设置此选择下拉菜单以将值返回到 Booking.MeetingSpace 属性。我可以在下拉列表中看到 meetingSpace 对象列表,但是在选择一个选项后,创建/编辑的对象中的 meetingSpace 字段不会像表单中的其他属性一样返回。我也尝试过使用 Booking.MeetingSpaceId int 进行相同的操作,但在提交表单后仍未填充。

【问题讨论】:

【参考方案1】:

这可能是一个绑定问题尝试像这样更改名称属性值:

<select data-value="true" data-va-required="The meeting space field is required" id="Booking.MeetingSpace.Id" name="Booking.MeetingSpace.Name">
            @foreach (var meetingSpace in Model.meetingSpaces)
            
                <option value="@meetingSpace.Id">@meetingSpace.Name</option>
            
</select>

选项值也应该以@开头才能被识别。

【讨论】:

您好,感谢您的帮助,我很难理解其中的一些 documentation。您是对的,在进行更改后,我注意到所选 ID 已保存在 Booking.MeetingSpace.Id 属性中。我将name="Booking.MeetingSpace.Id" 更改为name="Booking.MeetingSpaceId" 并得到了我想要的结果,谢谢。 很高兴能提供帮助。另请参阅这些文档以获取有关在 .net 核心中使用 select taghelper 的更多信息:docs.microsoft.com/en-us/aspnet/core/mvc/views/…。

以上是关于从选择下拉列表中检索对象的主要内容,如果未能解决你的问题,请参考以下文章

从下拉列表中选择选项后,Kendo UI Grid 中的下拉菜单显示对象-对象

html 从“选择”下拉列表中选择ID时,指定其他对象属性

Flask jinja2 检索下拉列表的值

从数据库中获取数据的下拉列表中选择值

在下拉列表中添加自定义对象作为选项

如何检索存储在 select2 下拉列表中的数据?