2014-03-05 98 views
0

比方說,我有以下看法:獲得屬性值

@model CityViewModel 

@Html.EditorFor(model => model.City.Name) @* This is fine *@ 

Welcome to @Model.City.Name @* This will error *@ 

我上@ Model.City.Name以下錯誤:Object reference not set to an instance of an object.

我如何去直接從視圖模型中獲取值?...

------------請注意,這比CityViewModel還有更多,這只是我剔除敏感名稱-----------------

我CityViewModel有市,省,國家型的混合物......他們只是這種類型的視圖模型裏面的屬性:

public class CityViewModel 
{ 
    [Display(Name = "City")] 
    public City City; 

    [Display(Name = "Country")] 
    public Country Country; 
} 

,然後我取這個東西有一個LINQ的加入和回報一個CityViewModel與它:

public CityViewModel CVMGetByID(int cityID) 
    { 
     var cityViewModel = 
      from _ in context._ 
      join address in context.Addresses on _.AddressID equals address.AddressID 
      join city in context.Cities on address.CityID equals city.CityID 
      join country in context.Countries on address.CountryID equals country.CountryID 
      join state in context.States on address.StateID equals state.StateID 
      where _._ID == _ID 
      select new CityViewModel(); 

     return cityViewModel.SingleOrDefault(); 
    } 
+0

此外,請檢查您是否甚至將數據從控制器發送到您的視圖。就像這可能'返回查看(新CityViewModel {...});' –

+0

我認爲問題是你沒有通過模型從控制器查看 –

+0

我認爲你是對的...我的LINQ可能無法檢索任何東西。 ..現在有道理..生病讓你更新 – Jimmyt1988

回答

0

也許從您的查詢中分配數據。 類似於

... 
select new CityViewModel { 
City = _City; 
}; 

等等。

+0

YEHAAAA,我愛你youuuuu !!!!這是那裏的混蛋.. YOOOOOOP ...我想你的孩子,我的朋友..猜猜誰是新手在這裏:) – Jimmyt1988

+0

我很高興我可以幫助你。但是,我感覺像一個新手,因爲我無法評論。 ;) 再一個提示,這與linq/entity框架密切相關。採取conideration添加另一個標籤。 –

0

你只傳遞一個對象到視圖或對象列表? 如果列表嘗試:

@Model.City[0].Name 
+0

只是一個,是的。 – Jimmyt1988

2

我注意到您在視圖模型中使用的是字段而不是屬性。也許這變化:

public City City; 

public City City { get; set; } 

將解決您的問題。

+0

哦DUHHH,好男人!如果這就是答案,我會不斷更新你的病情! – Jimmyt1988

+0

這也是問題之一!謝謝brahhhh – Jimmyt1988