使用ViewModel向视图中添加多个模型时,如何使用标签助手?

问题描述 投票:0回答:1

我正在构建一个ASP.NET MVC Web应用程序,该应用程序在一个视图中拥有多个表单。我希望用户能够填写每个表单,并捕获数据进行处理。这些表单有一个独特的模型,这个页面有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 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" 标签助手从模型中获取一个标签添加到这个输入元素中,但如果我尝试,就会得到构建错误。该错误意味着标签帮助程序没有看到模型。是我加载的不正确还是根本没有加载?

c# asp.net visual-studio viewmodel tag-helpers
1个回答
0
投票

谢谢,@pinkfloydx33和@Farhad Zamani!

原来,你需要像这样把ViewModel包含到视图中。

  @model WebApp.Models.Con.ViewModel;

然后... asp-for="ConModel.FirstName"

© www.soinside.com 2019 - 2024. All rights reserved.