Проблемы с привязкой группы переключателей в Razor Pages - PullRequest
0 голосов
/ 21 октября 2019

У меня возникли некоторые проблемы с использованием группы переключателей на моей странице ASP.NET Core 3.0 Razor . По сути, я хочу использовать радиогруппу вместо выбора, но я не знаю, как правильно связать ее с моей InputModel.

Код для рассматриваемой страницы бритвы. И остальной код в репо, конечно.

В моем cshtml.cs у меня есть модель ввода, определенная так

public class InputModel
{
    [Required]
    [StringLength(
        CTConfig.Story.MaxTitleLength,
        ErrorMessage = "The {0} must be at least {2} and at max {1} characters long.",
        MinimumLength = CTConfig.Story.MinTitleLength
    )]
    public string Title { get; set; }
    [Required]
    [StringLength(
        CTConfig.Story.MaxDescriptionLength,
        ErrorMessage = "The {0} must be at least {2} and at max {1} characters long.",
        MinimumLength = CTConfig.Story.MinDescriptionLength
    )]
    public string Description { get; set; }
    [Required]
    [StringLength(
        CTConfig.Story.MaxHookLength,
        ErrorMessage = "The {0} must be at least {2} and at max {1} characters long.",
        MinimumLength = CTConfig.Story.MinHookLength
    )]
    public string Hook { get; set; }
    [DataType(DataType.Upload)]
    [MaxFileSize(CTConfig.Story.CoverMaxWeight)]
    [AllowedExtensions(new[] {".jpg", ".jpeg", ".png"})]
    public IFormFile Cover { get; set; }
    [Required] 
    public Rating Rating { get; set; }
    [Required] 
    public List<Tag> Tags { get; set; }
}

и группа переключателей в .cshtml файл выглядит следующим образом:

<div class="form-group">
    <label>Rating</label>
    <p>The age rating</p>

    @foreach (var rating in Model.Ratings)
    {
        <div class="form-check">
            <input asp-for="Input.Rating" class="form-check-input" type="radio" id="@rating.Name.ToLower()" value="@rating.Id" checked>
            <label class="form-check-label" for="@rating.Name.ToLower()">@rating.Name</label>
        </div>
    }
    <span asp-validation-for="Input.Rating" class="text-warning"></span>   
</div>

и запрос при отправке формы также выглядит правильный .

Но если я выписываю ошибки

foreach (var msv in ModelState.Values)
{
    foreach (var error in msv.Errors)
    {
        Console.WriteLine(error.ErrorMessage);
    }
}

Я получаю ошибку

The Rating field is required.

, выписанную на консоль.

1 Ответ

0 голосов
/ 21 октября 2019

Наличие int Rating вместо полного Rating Rating в InputModel, похоже, решило проблему.

...