c# - ASP.Net Core MVC 从选择控件的视图访问 ViewModel
问题描述
首先,我想我是一个新手,我的背景是 ASP Web 表单,我正在尝试将我的技能集更新为最新的开发语言。
我有一个需要访问多个模块的视图,所以我创建了一个视图模型并将其传递给视图。我的问题是当我尝试从视图模型访问列表以填充选择(下拉列表)时。我不断收到错误消息。下面是我的视图模型: -
public class CustomerDetailsViewModel
{
public Customer customer { get; set; }
public IEnumerable<Lookups> titles { get; set; }
public List<Lookups> ePCs { get; set; }
public List<Lookups> jobStages { get; set; }
}
下面是我的选择控件代码。在我尝试访问标题列表的地方出现错误。
<div class="form-group">
<label asp-for="customer.Title_Id" class="col-sm-2 col-md-4 col-form-label">Title</label>
<select app-for="Title_Id" asp-items="@(new SelectList(titles,"PK_Id","Description"))"></select>
</div>
解决方案
由于您已经创建了视图模型,我假设您的视图具有@model
指令:
@model CustomerDetailsViewModel
当您将视图模型从控制器传递到视图时,它可以通过Model
属性在视图中访问。asp-for
标签助手不需要该属性Model
,它是隐式的。另一方面,asp-items
这种方式不起作用,它需要Model
前缀:
<select asp-for="customer.Title_Id"
asp-items="@(new SelectList(Model.titles,"PK_Id","Description"))">
</select>
此外,由于您的所有视图模型属性都是public
,因此命名约定是使用PascalCase
名称:
public class CustomerDetailsViewModel
{
public Customer Customer { get; set; }
public IEnumerable<Lookups> Titles { get; set; }
public List<Lookups> EPCs { get; set; }
public List<Lookups> JobStages { get; set; }
}
推荐阅读
- c# - Log4net json 不创建输出任何消息
- javascript - 无法读取未定义的属性“长度” - 按“Enter”键后,值变为未定义
- python - 为什么 webdiff 没有显示?
- docker - redhat7 docker镜像:如何安装python3
- typescript - 如何在 vuex 存储打字稿中动态地设置对象的属性(同时保持类型安全)
- maven - 集成 Gitlab 时出错 - Maven - Jfrog artivatory
- php - HTTP Response 是否有可能添加内容?
- php - 如何在 laravel 中执行复杂的 mysql 查询
- ubuntu - Sonar Qube for Ubuntu 成功扫描 .NET 项目,但未分析任何问题
- git - 更改并未反映在 Visual Studio 通过 GIT 的 bitbucket 中