我遇到问题,我的MP
类CompanyName
类属性不会显示在我的ASP.NET MVC 5项目的Ratings
详细信息页面中。
我在这个视图中使用了两个模型。 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 :(得分:0)
您实际上从未对此值执行任何操作:
code
没有代码可以访问它,一旦方法存在,值就消失了。当您尝试访问视图中的值时:
description
您正在尝试访问模型上的属性,但您从未在模型上设置该属性。
据推测,根据代码/描述,您打算做的是:
MP CompanyName = db.MedicalPractice.Find(id);
这将在@Html.DisplayFor(model => model.MP.CompanyName)
对象(您的模型)上设置ratings.MP = db.MedicalPractice.Find(id);
属性,并允许您在视图中访问该属性。
在您的情况下,细节可能会略有不同,因为您的对象结构和命名约定有点不清楚。但重点是您需要在模型上设置属性才能从模型中读取它们。该模型不会了解您在控制器方法中创建的其他变量。
答案 1 :(得分:0)
使用.Include简单地使用Details方法:
// 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);
}