错误的 select 标记呈现 ID - asp-for 属性
Wrong select tag rendered id - asp-for property
下面是我的代码
namespace Cinema.WebCore.Pages.MovieDateHall
{
public class CreateModel : PageModel
{
private readonly Cinema.WebCore.Data.CinemaContext _context;
public CreateModel(Cinema.WebCore.Data.CinemaContext context)
{
_context = context;
}
[BindProperty]
public SelectList Movies { get; set; }
public IActionResult OnGet()
{
MovieDateHallSeats movieDateHall = new MovieDateHallSeats();
movieDateHall.Movies = _context.Movies.ToList();
Movies = new SelectList(movieDateHall.Movies, "Id", "MovieTitle");
return Page();
}
}
}
前端代码为
@page
@model Cinema.WebCore.Pages.MovieDateHall.CreateModel
<select asp-for="Movies" asp-items="Model.Movies">
<option value="">Pick one</option>
</select>
它可以工作,但是 select 标签的渲染输出有 multiple=multiple
,这不是我需要的。
<select id="Movies" multiple="multiple" name="Movies">
<option value="">Pick one</option>
<option value="1">Matrix</option>
</select>
我需要的是...
<select id="MovieId" name="Movies">
<option value="">Pick one</option>
<option value="1">Matrix</option>
</select>
我在代码隐藏处的绑定不正确吗?
[BindProperty]
public SelectList Movies { get; set; }
你需要再来一个属性
public string SelectedMovie {get;set;}
并将其用于 asp-for
我认为您使用 select
的方式有误。对于 asp-for
你应该把你的 属性 handles selected value
<select asp-for="MovieId" asp-items="Model.Movies">
<option value="">Pick one</option>
</select>
示例:
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public int Price { get; set; }
public int CompanyId { get; set; }
public Company Company { get; set; }
}
///
form asp-action="Create" asp-controller="Home" asp-antiforgery="true">
<div>
<div>
<label asp-for="Name"></label>
<input type="text" asp-for="Name" />
</div>
<div>
<label asp-for="Price"></label>
<input asp-for="Price" />
</div>
<div>
<label asp-for="CompanyId"></label>
<select asp-for="CompanyId" asp-items="ViewBag.Companies"></select>
</div>
<div>
<input type="submit" value="Save" />
</div>
</div>
</form>
下面是我的代码
namespace Cinema.WebCore.Pages.MovieDateHall
{
public class CreateModel : PageModel
{
private readonly Cinema.WebCore.Data.CinemaContext _context;
public CreateModel(Cinema.WebCore.Data.CinemaContext context)
{
_context = context;
}
[BindProperty]
public SelectList Movies { get; set; }
public IActionResult OnGet()
{
MovieDateHallSeats movieDateHall = new MovieDateHallSeats();
movieDateHall.Movies = _context.Movies.ToList();
Movies = new SelectList(movieDateHall.Movies, "Id", "MovieTitle");
return Page();
}
}
}
前端代码为
@page
@model Cinema.WebCore.Pages.MovieDateHall.CreateModel
<select asp-for="Movies" asp-items="Model.Movies">
<option value="">Pick one</option>
</select>
它可以工作,但是 select 标签的渲染输出有 multiple=multiple
,这不是我需要的。
<select id="Movies" multiple="multiple" name="Movies">
<option value="">Pick one</option>
<option value="1">Matrix</option>
</select>
我需要的是...
<select id="MovieId" name="Movies">
<option value="">Pick one</option>
<option value="1">Matrix</option>
</select>
我在代码隐藏处的绑定不正确吗?
[BindProperty]
public SelectList Movies { get; set; }
你需要再来一个属性
public string SelectedMovie {get;set;}
并将其用于 asp-for
我认为您使用 select
的方式有误。对于 asp-for
你应该把你的 属性 handles selected value
<select asp-for="MovieId" asp-items="Model.Movies">
<option value="">Pick one</option>
</select>
示例:
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public int Price { get; set; }
public int CompanyId { get; set; }
public Company Company { get; set; }
}
///
form asp-action="Create" asp-controller="Home" asp-antiforgery="true">
<div>
<div>
<label asp-for="Name"></label>
<input type="text" asp-for="Name" />
</div>
<div>
<label asp-for="Price"></label>
<input asp-for="Price" />
</div>
<div>
<label asp-for="CompanyId"></label>
<select asp-for="CompanyId" asp-items="ViewBag.Companies"></select>
</div>
<div>
<input type="submit" value="Save" />
</div>
</div>
</form>