【问题标题】:ASP.Net Core MVC Accessing a ViewModel From a View for a Select controlASP.Net Core MVC 从视图中访问视图模型以获得选择控件
【发布时间】:2021-06-09 10:32:07
【问题描述】:

首先我想我是一个新手,我的背景是 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属性访问它们。

标签: c# asp.net-core select viewmodel


【解决方案1】:

既然你已经创建了一个视图模型,我假设你的视图有 @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; }
 }

【讨论】:

  • 非常感谢。你知道如何引导选择控件的样式吗?我的看起来有点平。
  • @user1633508 不客气。是的,使用&lt;select class="form-control"&gt;。您也可以使用custom-select。更多关于它here。如需更灵活的样式,请尝试bootstrap-select 插件
  • 再次感谢您,我尝试使用 bootstrap selectpicker 类,但它什么也没做。我的布局文件中有对引导 css 的引用,所以不确定我缺少什么。
  • 我已经添加了插件文件,并且选择控件现在看起来样式化了,但是我无法从列表中选择,它没有下拉。请问有什么想法吗?
  • @user1633508 似乎没有填充列表。在使用插件之前它是否有效?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-27
  • 1970-01-01
  • 2012-08-23
  • 1970-01-01
  • 2021-02-24
相关资源
最近更新 更多