Как использовать помощники по тегам при использовании ViewModel для добавления нескольких моделей в представление? - PullRequest
0 голосов
/ 28 апреля 2020

Я создаю ASP. NET MVC веб-приложение, которое имеет несколько форм в представлении. Я хочу, чтобы пользователь мог заполнять каждую форму и собирать данные для обработки. Эти формы имеют уникальную модель 3 для этой страницы, которую нужно каким-то образом добавить в представление, поэтому я попробовал ViewModel.

ViewModel.cs

public class ViewModel
{
    public ConModel ConModel { get; set; }
    public CompanyModel CompanyModel { get; set; }
    public ComplaintModel ComplaintModel { get; set; }
    public KnowledgeModel KnowledgeModel { get; set; }
}

Все модели в ViewModel выглядят одинаково:

public class ConModel
{
    [Required]
    [Display(Name = "First Name")]
    public string FirstName { get; set; }
    . . .
}

Я загружаю ViewModel в мое представление в контроллере:

public class FormsController : Controller
{
    public IActionResult Index()
    {
        ViewModelFraud viewModelFraud = new ViewModelFraud();
        viewModelFraud.ConModel = new ConModel();
        viewModelFraud.CompanyModel = new CompanyModel();
        . . .
        return View(viewModelFraud);
    }
}

На мой взгляд, я создаю помощник по тегам в моем form:

<form asp-page-handler="Con" method="post">
     <div class="col-sm-12">
         <div class="custom-control custom-switch">
              <input type="text" class="custom-control-input" id="FirstName">
              <label class="custom-control-label" asp-for="FirstName"></label>
         </div>
     </div>
     . . .

Я использую asp-for="FirstName" помощник по тегам, чтобы получить метку, добавленную к этому элементу ввода из модели, но я получаю ошибки сборки, если я попытаюсь. Ошибка подразумевает, что помощник по тегам не видит модель. Я загружаю их неправильно или вообще?

1 Ответ

0 голосов
/ 28 апреля 2020

Спасибо, @ pinkfloydx33 и @Farhad Zamani!

Оказывается, вам нужно включить ViewModel в представление следующим образом:

  @model WebApp.Models.Con.ViewModel;

И asp-for="ConModel.FirstName"

...