2015-06-07 55 views
0

我有一個問題,其中我的模型MPCompanyName類屬性將不會顯示在我的ASP.NET MVC 5項目的Ratings詳細信息頁面中。模型屬性不在詳細信息頁面中顯示ASP.NET MVC 5

我對這個視圖使用了兩種模型。 MP類是Ratings類的外鍵。

型號:Ratings

public class Ratings 
{ 
    //Rating Id (PK) 
    public int Id { get; set; } 

    [DisplayName("User Name")]    
    public string UserId { get; set; } 

       //Medical Practice (FK) 
       public int MpId { get; set; } 
       public MP MP { get; set; } 

    //User ratings (non-key values) 

    [DisplayName("Wait Time")] 
    [Required] //Adding Validation Rule 
    public int WaitTime { get; set; } 

    [Required] //Adding Validation Rule 
    public int Attentive { get; set; } 

    [Required] //Adding Validation Rule 
    public int Outcome { get; set; } 


} 

控制器:RatingsController

 // GET: Ratings/Details/5 
    public ActionResult Details(int? id) 
    { 

     if (id == null) 
     { 
      return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
     } 
     Ratings ratings = db.Ratings.Find(id); 
     if (ratings == null) 
     { 
      return HttpNotFound(); 
     } 

     MP CompanyName = db.MedicalPractice.Find(id); 

     return View(ratings); 
    } 

評分查看:詳細

<dl class="dl-horizontal"> 
    <dt> 
     @Html.DisplayNameFor(model => model.MP.CompanyName) 
    </dt> 

    <dd> 
     @Html.DisplayFor(model => model.MP.CompanyName) 
    </dd> 

    <dt> 
     @Html.DisplayNameFor(model => model.UserId) 
    </dt> 

    <dd> 
     @Html.DisplayFor(model => model.UserId) 
    </dd> 

    <dt> 
     @Html.DisplayNameFor(model => model.WaitTime) 
    </dt> 

    <dd> 
     @Html.DisplayFor(model => model.WaitTime) 
    </dd> 

    <dt> 
     @Html.DisplayNameFor(model => model.Attentive) 
    </dt> 

    <dd> 
     @Html.DisplayFor(model => model.Attentive) 
    </dd> 

    <dt> 
     @Html.DisplayNameFor(model => model.Outcome) 
    </dt> 

    <dd> 
     @Html.DisplayFor(model => model.Outcome) 
    </dd> 

</dl> 
+0

你似乎並沒有被設置rating.MP'的'的價值,更不用說'rating.MP.CompanyName' –

回答

0

你從來沒有真正使用這個值做任何事情:

MP CompanyName = db.MedicalPractice.Find(id); 

沒有訪問它的代碼,只要方法存在,值就不存在了。當您嘗試在視圖中訪問該值:

@Html.DisplayFor(model => model.MP.CompanyName) 

你試圖對模型訪問屬性,但你永遠不設置該屬性的模型。

據推測,基於代碼/描述,你的意思做的是這樣的:

ratings.MP = db.MedicalPractice.Find(id); 

這將您設定的ratings對象的MP財產(這是你的模型),並允許訪問該視圖中的屬性。

由於您的對象結構和命名約定有點不清楚,您的情況可能略有不同。但重點是您需要在模型上設置屬性以便從模型中讀取它們。該模型不會了解您在控制器方法中創建的其他變量。

+0

我懷疑它的可能是'ratings.MP = db.MedicalPractice.Find(rating.MpId);' –

0

.INCLUDE使用簡單的方法細節:

// GET: Ratings/Details/5 
public ActionResult Details(int? id) 
{ 

    if (id == null) 
    { 
     return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
    } 
    Ratings ratings = db.Ratings.Find(id).Include("MP"); 
    if (ratings == null) 
    { 
     return HttpNotFound(); 
    }  

    return View(ratings); 
} 
相關問題