【问题标题】:How can I access model property inside viewmodel using asp-for?如何使用 asp-for 访问 viewmodel 中的模型属性?
【发布时间】:2016-10-24 19:08:40
【问题描述】:

我有这个模型

public partial class MtbWarehouse
{
    public int Idhwarehouse { get; set; }
    public string Namewh { get; set; }
}

我在这个视图模型中实现模型

public class WarehouseViewModel 
{
    public MtbWarehouse Warehouse { get; set; }
    public string ListAction { get; set; } = "Index";
}

我在视图中使用 WarehouseViewModel

@model ViewModel.warehouseviewmodel 
<input type="text" asp-for="Warehouse" class="form-control" placeholder="">

我如何使用asp-for 访问Namewh,因为这个 asp-for 的东西比使用更好

@Html.TextBoxFor()

【问题讨论】:

  • 什么是namewh?以前没听说过
  • namewh 是我在仓库视图模型中实现的模型中的属性
  • 你想在哪里访问它?怎么样?
  • 我想在视图仓库视图中访问它。过去使用 html.textbox 现在我不知道。
  • 你试过asp-for="Warehouse.Namewh"吗?看起来你的@model 与你的类名不匹配,但我假设有很多工作。

标签: asp.net asp.net-mvc asp.net-core viewmodel tag-helpers


【解决方案1】:

如果您在为视图模型的Warehouse 属性的Namewh 属性呈现输入文本元素之后,您可以使用点符号来访问子属性的属性。像这样

<form asp-action="Index" asp-controller="Home">   
    <input type="text" asp-for="Warehouse.Namewh" />
    <input type="submit"/>
</form>

这将生成一个名称为 Warehouse.Namewh 的输入文本元素,如果您通过 GET 操作方法设置该属性的值,它将呈现该属性的值。

VS Intellisense 可能仍会将此显示为无效的红色。但是当这段代码被执行时,标签助手会生成正确的输入字段,其值为

【讨论】:

  • 不是这样的。我想以旧方式访问warehouseviewmodel 中的仓库,它以我不知道的新方式使用@html.textboxfor(m => m.warehouse.namewh)
  • 当您使用asp-for="Warehouse.Namewh" 时,它会生成名称属性为name="Warehouse.Namewh"。有什么办法让它生成name="Namewh"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多