6

我在我的視圖模型中有一些內部的自動屬性,但我的強類型視圖沒有看到它們。一切都在同一個組件中,爲什麼會發生這種情況?在視圖中不能訪問我的視圖模型中的內部成員?

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

@*My view*@ 
@model MyViewModel 

@Model.PublicProperty 

@Model.InternalProperty @*Causes compilation error*@ 
+0

你看到了什麼錯誤?你有PublicProperty作爲內部和InternalProperty作爲公共,是你的意圖。 – 2011-04-27 19:36:40

+0

這是標準的參考未定義或不擴展方法找到的編譯錯誤。哎呀。我修正了訪問修飾符不匹配的問題。謝謝! – gabe 2011-04-27 20:20:18

回答

11

視圖由ASP.NET運行時在單獨的動態生成的程序集中編譯。所以你不能使用內部屬性。你當然可以在你的模型上有內部屬性,但是一旦你將它們映射到視圖模型,就不會有問題,因爲你總是應該將視圖模型傳遞給視圖。

結論:始終只在視圖模型上使用公共屬性。

+0

我試過在我的類A中聲明'public static darin {get; set;}',並通過'return view(new A())'返回模型類在視圖中,我可以訪問所有屬性,但無法訪問'darin' ?任何想法 – 2015-06-29 10:01:08

相關問題