2015-06-07 38 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); 
} 
相关问题