ASP.Net 核心 MVC 从 Select 控件的视图访问 ViewModel
ASP.Net Core MVC Accessing a ViewModel From a View for a Select control
首先我想说我是这方面的新手,我的背景是 asp 网络表单,我正在尝试将我的技能更新到最新的开发语言。
我有一个视图需要访问多个模块,所以我创建了一个视图模型并将其传递给视图。我的问题是当我尝试从视图模型访问列表以填充 select (下拉列表)时。我不断收到错误消息。下面是我的视图模型:-
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; }
}
下面是我的 select 控件代码。我尝试访问标题列表时出现错误。
<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; }
}
首先我想说我是这方面的新手,我的背景是 asp 网络表单,我正在尝试将我的技能更新到最新的开发语言。
我有一个视图需要访问多个模块,所以我创建了一个视图模型并将其传递给视图。我的问题是当我尝试从视图模型访问列表以填充 select (下拉列表)时。我不断收到错误消息。下面是我的视图模型:-
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; }
}
下面是我的 select 控件代码。我尝试访问标题列表时出现错误。
<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; }
}