传递下拉列表数据,然后将其显示在表单中



我对.net核心非常陌生,为了好玩,我试着教自己一些东西。

我正试图将国家列表传递到国家模型的表格中。

俱乐部模型

using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc.Rendering;
namespace SoccerExchange.Models
{
public class Club
{
public int Id { get; set; }
public string ClubName { get; set; }
public string LeagueName { get; set; }
public string Standard { get; set; }
public ICollection<Advert> Adverts { get; set; }
}
}

国家模式

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace SoccerExchange.Models
{
public class Country
{
public int Id { get; set; }
public string CountryName { get; set; }
public ICollection<Club> Clubs { get; set; }
}
}

ViewModel

using System;
using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc.Rendering;
using SoccerExchange.Models;
namespace SoccerExchange.ViewModels
{
public class NewClubViewModel
{
public SelectList CountriesList { get; set; }
public Club Club { get; set; }
}
}

在控制器中创建函数

public IActionResult Create()
{
var countries = _context.Countries.ToList();
var viewModel = new NewClubViewModel
{
CountriesList = new SelectList(countries, "Id", "CountryName")
};
return View(viewModel);
}

创建视图

@model SoccerExchange.ViewModels.NewClubViewModel
@{
ViewData["Title"] = "Create";
}
<h1>Create</h1>
<h4>Club</h4>
<hr />
<div class="row">
<div class="col-md-4">
<form asp-action="Create">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="Club.ClubName" class="control-label"></label>
<input asp-for="Club.ClubName" class="form-control" />
<span asp-validation-for="Club.ClubName" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Club.LeagueName" class="control-label"></label>
<input asp-for="Club.LeagueName" class="form-control" />
<span asp-validation-for="Club.LeagueName" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Club.Standard" class="control-label"></label>
<input asp-for="Club.Standard" class="form-control" />
<span asp-validation-for="Club.Standard" class="text-danger"></span>
</div>
<div>
@Html.DropDownListFor(m => Model.CountriesList, "--Please Select--")
</div>
<div class="form-group">
<input type="submit" value="Create" class="btn btn-primary" />
</div>
</form>
</div>
</div>
<div>
<a asp-action="Index">Back to List</a>
</div>
@section Scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}

我几乎可以肯定,我的模型和ViewModels都是正确的。我也几乎可以肯定我的创建方法是正确的。但由于某种原因,我无法通过列表中的数据进行下拉。

有人能暗示我可能做错了什么吗?

Html.DropDownListFor需要将数据源作为第二个参数(请参见下文(。

DropDownList的Intellisense图像

这篇文章可能对你有一些帮助ASP.NET MVC下拉列表从SelectList

您需要通过添加Country 来修复您的clab类

public class Club
{
public int Id { get; set; }
public string ClubName { get; set; }
public int CountryId { get; set; }
public virtual Country Country { get; set; }
.....
}

并修复视图

@Html.DropDownListFor(m =>m.Club.CountryId,  @Model.CountriesList, "--Please Select--")

相关内容

  • 没有找到相关文章

最新更新