在asp.core剃须刀页面中设置选定的项目 [英] Set selected items in asp.core razor pages
问题描述
我正在使用ASP Core Razor页面. 这是我的Edit.cshtml.cs:
I'm using ASP Core Razor pages. This my Edit.cshtml.cs:
[BindProperty]
public List<Microsoft.AspNetCore.Mvc.Rendering.SelectListItem> CCusers { get; set; }
and here I fill CCusers with data:
CCusers =new List<Microsoft.AspNetCore.Mvc.Rendering.SelectListItem>() {
new Microsoft.AspNetCore.Mvc.Rendering.SelectListItem() { Value = "1", Text = "HR", Selected = true },
new Microsoft.AspNetCore.Mvc.Rendering.SelectListItem() { Value = "2", Text = "IT", Selected = false },
new Microsoft.AspNetCore.Mvc.Rendering.SelectListItem() { Value = "3", Text = "Account", Selected = false },
};
在Razor Page中,我使用了两个不同的选择:
In Razor Page, I used two different select:
<select asp-for="CCusers" asp-items="@Model.CCusers" id="CCusers" multiple="multiple" class="selectpicker"> </select>
//and this:
@Html.DropDownList("NewSelect", Model.CCusers, new { @class = "selectpicker", @multiple = "multiple" })
这是他们两个人的结果:
and this the result of both of them:
<select id="CCusers" multiple="multiple" class="selectpicker" name="CCusers">
<option value="1">HR</option>
<option value="2">IT</option>
<option value="3">Account</option>
</select>
<select class="selectpicker" id="NewSelect" multiple="multiple" name="NewSelect">
<option selected="selected" value="1">HR</option>
<option value="2">IT</option>
<option value="3">Account</option>
</select>
当@ Httml.DropDownList进行设置时,Core Select并未设置所选项目. 第一次选择时我缺少什么?
The Core Select didn't set the selected item while the @Httml.DropDownList did it. What I'm missing in the first select?
推荐答案
For Select Tag Helper, you will need to set asp-for
which specifies the model proprety name for the select
element.
对于您的问题,您需要为selected CCusers
定义新属性,而不是直接将CCusers
绑定到asp-for
.
For your issue, you need to define new property for selected CCusers
instead of binding the CCusers
to asp-for
directly.
您可以在下面引用代码:
You could refer code below:
页面
public class EditModel : PageModel
{
[BindProperty]
public int[] SelectedCCuserIds { get; set; }
[BindProperty]
public List<SelectListItem> CCusers { get; set; }
public void OnGet()
{
SelectedCCuserIds = new int[] { 1, 2 };
CCusers = new List<SelectListItem>() {
new SelectListItem() { Value = "1", Text = "HR" },
new SelectListItem() { Value = "2", Text = "IT" },
new SelectListItem() { Value = "3", Text = "Account" },
};
}
public IActionResult OnPost()
{
var result = SelectedCCuserIds;
return RedirectToAction("OnGet");
}
}
查看
@page
@model CoreRazor.Pages.EditModel
@{
ViewData["Title"] = "Edit";
}
<h2>Edit</h2>
<form method="post">
<select asp-for="@Model.SelectedCCuserIds" asp-items="@Model.CCusers"
multiple="multiple" class="selectpicker"> </select>
@*@Html.DropDownList("NewSelect", Model.CCusers, new { @class = "selectpicker",
@multiple = "multiple" })*@
<div class="form-group">
<input type="submit" value="Save" class="btn btn-default" />
</div>
这篇关于在asp.core剃须刀页面中设置选定的项目的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!