Как установить проверочное сообщение для поля ввода, связанного с entitymodel? - PullRequest
0 голосов
/ 14 января 2019

Как я могу установить сообщение проверки для всех этих полей? Я не уверен, как установить это, когда я связываю все непосредственно с моей Аннулированием модели лица? Я попытался установить валидационное сообщение прямо в моей сущности.

Это моя бритва

@page
@model Index
@{
    ViewBag.Title = "Index";
}

<div class="body-content">
    <form id="avboka-form" method="post">
        @Html.AntiForgeryToken()
        <div class="form-group">
            <div class="col-med-5">
                <label asp-for="Cancellation.Elev"></label>
                <input type="text" id="elev" asp-for="Cancellation.Elev" class="form-control">
                <span asp-validation-for="Cancellation.Elev"></span>
            </div>
        </div>
        <div class="form-group">
            <div class="col-med-5">
                <label asp-for="Cancellation.Dag"></label>
                <input asp-for="Cancellation.Dag" type="datetime" id="datepicker" class="datepicker1 form-control">
                <span asp-validation-for="Cancellation.Dag"></span>
            </div>
        </div>
        <div class="form-group">
            @Html.LabelFor(x => Model.SelectedKommun, htmlAttributes: new { @class = "control-label col-med-2" })
            <div class="col-med-5">
                @Html.DropDownListFor(x => Model.Cancellation.KommunId, new SelectList(Model.Kommun, "Value", "Text"), htmlAttributes: new { @class = "form-control", id = "kommun" })
                @Html.ValidationMessageFor(x => x.SelectedKommun, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(x => Model.SelectedFordon, htmlAttributes: new { @class = "control-label col-med-2" })
            <div class="col-med-5">
                @Html.DropDownListFor(x => Model.Cancellation.FordonId, new SelectList(Model.Fordon, "Value", "Text"), htmlAttributes: new { @class = "form-control", @id = "fordon" })
                @Html.ValidationMessageFor(x => x.SelectedFordon, "", new { @class = "text-danger" })
            </div>
        </div>
        <div class="col-med-5">
            <label asp-for="Cancellation.Skola.Namn"></label>
            <select id="skola" name="Cancellation.SkolaId" class="form-control">
                @foreach (var schools in Model.School)
                {
                    <option value="@schools.Id">@schools.Namn</option>
                }
            </select>
            <span asp-validation-for="Cancellation.SkolaId"></span>
        </div>
        <input type="submit" name="save" value="Avboka skolskjuts" class="vt-btn" />
    </form>
</div>

Вот часть моей модели страницы, где я связываю свои поля ввода. Выборки собираются из других таблиц и поэтому никогда не являются пустыми.

[BindProperty]
public Avbokning Cancellation { get; set; }

public Index(SqlAvbokningData<Avbokning> avbokningRepo, SqlKommunData<Kommun> kommunRepo, SqlFordonData<Fordon> fordonRepo, SqlSkolaData<Skola> skolaRepo)
{
    _avbokningRepo = avbokningRepo;
    _kommunRepo = kommunRepo;
    _fordonRepo = fordonRepo;
    _skolaRepo = skolaRepo;
}

public async Task<IActionResult> OnGet()
{

    Kommun = await _kommunRepo.GetKommuner();
    Fordon = _fordonRepo.GetFordon();
    Municipalities = await _kommunRepo.GetAll();
    Vehicle = await _fordonRepo.GetAll();
    School = await _skolaRepo.GetAll();
    return Page();
}


[ValidateAntiForgeryToken]
public async Task<IActionResult> OnPost()
{
    if (ModelState.IsValid)
    {
        //if (!Cancellation.Validate())
        //    return Redirect("/");
        await _avbokningRepo.Add(Cancellation);
        return Redirect("/Tack");
    }
    return RedirectToAction("OnGet");

}

1 Ответ

0 голосов
/ 14 января 2019

Проверка в MVC может быть выполнена с помощью модели представления. Вы указываете свою модель следующим образом:

 public class LogOnViewModel
 {
    [Required(ErrorMessage = "RequiredField")]
    [Display(Name = "Username")]
    public string Username { get; set; }

    [Required(ErrorMessage = "RequiredField")]
    [DataType(DataType.Password)]
    [Display(Name = "Password")]
    public string Password { get; set; }
  }

Как только вы попадете на саму веб-страницу, ValidationMessageFor затем проверит поля на основе аннотаций данных, которые вы поместили в модель представления, по мере того, как вы передадите это на веб-страницу.

В контроллере вы можете передать его на страницу такими способами:

var viewModel = new LogOnViewModel();
// do stuff
return View(viewModel);

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

...