【问题标题】: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 进行相同的操作,但在提交表单后仍未填充。

【问题讨论】:

    标签: c# html asp.net forms


    【解决方案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/…。
    猜你喜欢
    • 1970-01-01
    • 2012-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-13
    • 1970-01-01
    • 2018-01-29
    • 2012-04-02
    相关资源
    最近更新 更多