C# 处理@HTML.Label的lambda
我有一个视图,我的类叫做Cliente,定义如下C# 处理@HTML.Label的lambda,c#,asp.net-mvc-3,razor,C#,Asp.net Mvc 3,Razor,我有一个视图,我的类叫做Cliente,定义如下 public partial class Cliente { public Cliente() { this.Campana = new HashSet<Campana>(); } public short IdCliente { get; set; } public short IdDireccion { get; set; } public string Descr
public partial class Cliente
{
public Cliente()
{
this.Campana = new HashSet<Campana>();
}
public short IdCliente { get; set; }
public short IdDireccion { get; set; }
public string Descripcion { get; set; }
public bool Activo { get; set; }
public virtual ICollection<Campana> Campana { get; set; }
public virtual Direccion Direccion { get; set; }
}
现在我想知道的是,如何创建一个lambda表达式来创建基于类的标签和字段。我试过这样做,但不起作用
@foreach (var item in ViewBag.Campanas)
{
@Html.LabelFor (modelItem => item.Descripcion)
}
这是坎帕纳班
public partial class Campana
{
public Campana()
{
this.Servicio = new HashSet<Servicio>();
}
public short IdCampana { get; set; }
public short IdCliente { get; set; }
public string Descripcion { get; set; }
public bool Activo { get; set; }
public virtual Cliente Cliente { get; set; }
public virtual ICollection<Servicio> Servicio { get; set; }
}
出现该错误的原因是无法在动态引用上使用lambdas。i、 ViewBag现在,您已经说过一些关于强类型视图的内容,但是您的视图实际上并不是强类型的。为此,使用@model指令。您可以这样声明您的模型:
@model Table<Campana>
然后,您可以使用模型,而不是使用ViewBag.Campanas。或者,如果愿意的话,也可以传入整个数据上下文数据库。然而,这不是很好的做法。最好为视图创建单独的视图模型,并将linq to sql对象转换为视图模型。出现此错误的原因是无法在动态引用上使用lambdas。i、 ViewBag现在,您已经说过一些关于强类型视图的内容,但是您的视图实际上并不是强类型的。为此,使用@model指令。您可以这样声明您的模型:
@model Table<Campana>
然后,您可以使用模型,而不是使用ViewBag.Campanas。或者,如果愿意的话,也可以传入整个数据上下文数据库。然而,这不是很好的做法。最好为视图创建单独的视图模型,并将linq到sql对象转换为视图模型
现在我想知道的是,我怎样才能对
基于类创建标签和字段
如果你使用这种蹩脚的ViewBag/ViewData,你完全可以忘记lambda和强类型。不可能。ViewBag是动态分辨率,不提供任何编译时类型安全性
我建议您使用视图模型,并让控制器操作将特定的视图模型类型传递给视图。简单地忘记ViewBag的存在。它将使您的代码具有强类型和编译时安全性
在www上有很多文章和教程教人们这个ViewBag的癌症。我真的受够了。请不要在任何应用程序中使用它
定义视图模型。
使控制器动作将这些视图模型传递给视图。
强烈键入视图@model MyViewModel
在视图中使用具有lambda表达式和编译时安全性的强类型帮助程序。
结论:只有当您从应用程序中完全删除ViewBag/ViewData的任何痕迹后,我们才能在视图中讨论lambdas和强类型
现在我想知道的是,我怎样才能对
基于类创建标签和字段
如果你使用这种蹩脚的ViewBag/ViewData,你完全可以忘记lambda和强类型。不可能。ViewBag是动态分辨率,不提供任何编译时类型安全性
我建议您使用视图模型,并让控制器操作将特定的视图模型类型传递给视图。简单地忘记ViewBag的存在。它将使您的代码具有强类型和编译时安全性
在www上有很多文章和教程教人们这个ViewBag的癌症。我真的受够了。请不要在任何应用程序中使用它
定义视图模型。
使控制器动作将这些视图模型传递给视图。
强烈键入视图@model MyViewModel
在视图中使用具有lambda表达式和编译时安全性的强类型帮助程序。
结论:只有在您完全从应用程序中删除任何ViewBag/ViewData痕迹后,我们才能在您的视图中讨论lambdas和强类型。事实上,我做到了,只是我没有添加到问题中,然而,它与@model client相关的视图事实上,我做到了,只是我没有添加到问题中,然而,它与@model相关的视图Client@KirkWoll,当我看到ViewBag时,我怎么能不咆哮?这不仅让我大喊大叫,还让我呕吐。我经常在代码评审时看到这一点,我现在已经习惯了这种废话。不幸的是,无论我怎么努力,人们仍然继续使用。“这就是微软引入这个概念的过错。”柯克沃尔,当我看到ViewBag时,我怎么能不咆哮呢?这不仅让我大喊大叫,还让我呕吐。我经常在代码评审时看到这一点,我现在已经习惯了这种废话。不幸的是,无论我怎么努力,人们仍然继续使用。这就是微软引入这一概念的过错。