ASP.Net 核心 Razor 页面,selectedList 未呈现

ASP.Net Core Razor Page, selectedList not rendering

我是 asp.net 核心的新手,刚开始用它开发一个网站。最近,我遇到了一个问题。我有一个页面,其中有一个默认下拉列表供用户 select 相应的选项(所有选项都是从我从数据库中获得的 selectedItem 呈现的)

然而,当用户决定添加一个额外的下拉列表时(我使用 javascript 来完成),选项是空白的。有什么建议吗?

谢谢。

function GetNewDropdown() {
            return '<hr /><div class="card-body"><h4 class="card-title text-primary">Please select your options</h4 > <div class="row">' +
                ' <select class="form-control" asp-items="@Model.Options"></div></div>';}

您的动态下拉菜单是一个标签助手。标签助手是服务器端组件。它们仅在页面最初由 Web 服务器呈现时才起作用。它们在浏览器中不起作用。

你可以做的是将 HTML 从你的 JavaScript 函数移动到一个部分页面,然后使用 JavaScript 调用一个命名的页面处理程序方法 returns a PartialResult 并将其加载到您的页面中。

部分:

@model List<SelectListItem>
<hr />
<div class="card-body">
    <h4 class="card-title text-primary">Please select your options</h4>
    <div class="row">
        <select class="form-control" asp-items="@Model"></select>
    </div>
</div>

Razor 页面:

<button id="add-dropdown">Add</button>
<div id="zone"></div>

@section scripts{
<script>
    $(function(){
        $('#add-dropdown').on('click', function(){
            $.get('?handler=options', function(response){
                $(response).appendTo('#zone');
            });
        });
    });
</script>
}

PageModel 中的命名处理程序:

public List<SelectListItem> Options { get; set; }
public PartialViewResult OnGetOptions()
{
    Options = new List<SelectListItem> { 
        new SelectListItem { Text = "a", Value = "1" }, 
        new SelectListItem { Text = "b", Value = "2" },
        new SelectListItem { Text = "c", Value = "3" },
    };
    return Partial("_DropdownPartial", Options);
}

您可以在我的网站上阅读更多关于这些内容的信息: