C# 如何使用Html.NameFor获取孙子集合属性的名称?
假设我有以下几个类:C# 如何使用Html.NameFor获取孙子集合属性的名称?,c#,javascript,asp.net-mvc,razor,C#,Javascript,Asp.net Mvc,Razor,假设我有以下几个类: class FooViewModel { // ...Other scalar properties public IEnumerable<BarViewModel> Bars { get; set; } } class BarViewModel { // ...Other scalar properties public IEnumerable<BazViewModel> Bazs { get; set;
class FooViewModel
{
// ...Other scalar properties
public IEnumerable<BarViewModel> Bars { get; set; }
}
class BarViewModel
{
// ...Other scalar properties
public IEnumerable<BazViewModel> Bazs { get; set; }
}
class BazViewModel
{
// ...Other scalar properties
}
如何获取字符串值
Bazs
(从FooViewModel
)并将其呈现在javascript变量中?可能是因为bar.Bazs
正在返回一个或多个对象而不是属性?您可以在Razor代码中设置断点以查看返回的内容。顺便说一句,我们认为最好将linq放在控制器中,并将结果传递给视图。@markpsmith在上述我的类结构中,bar.baz
是一个属性。我没有把这个字符串值放在我的视图模型中,因为我不想用模型绑定中未使用的信息污染我的视图模型。
<script>
// bazs returns empty string
var bazs = '@Html.NameFor(m => m.Bars.Select(bar => bar.Bazs))';
// bazs returns empty string as well
var bazs = '@Html.NameFor(m => m.Bars.SelectMany(bar => bar.Bazs))';
</script>