【问题标题】:How come internal members in my view model aren't accessible in the view?为什么我的视图模型中的内部成员无法在视图中访问?
【发布时间】:2011-08-14 03:31:40
【问题描述】:

我的视图模型中有一些内部自动属性,但我的强类型视图看不到它们。一切都在同一个程序集中,为什么会发生这种情况?

public class MyViewModel {
    public   int PublicProperty { get; set; }
    internal int InternalProperty   { get; set; }
}

.

@*My view*@
@model MyViewModel

@Model.PublicProperty

@Model.InternalProperty @*Causes compilation error*@

【问题讨论】:

  • 您看到了什么错误?您将 PublicProperty 作为 internal 并将 InternalProperty 作为 public,这是您的意图。
  • 这是一个标准的参考未定义或未找到扩展方法的编译错误。哎呀。我修复了访问修饰符不匹配的问题。谢谢!

标签: asp.net-mvc asp.net-mvc-3 viewmodel access-modifiers strongly-typed-view


【解决方案1】:

视图由 ASP.NET 运行时编译到单独的动态生成的程序集中。所以你不能使用内部属性。当然,您的模型上仍然可以有内部属性,但是一旦将它们映射到视图模型就不会有问题,因为无论如何您都应该始终将视图模型传递给视图。

结论:始终只在视图模型上使用公共属性。

【讨论】:

  • 我尝试在我的A类中声明public static darin{get;set;}并通过return view(new A())返回模型类,因为我可以访问所有属性但无法访问darin?任何想法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-25
  • 2015-10-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多