模型属性没有显示在详细信息页中.asp.net MVC 5
本文关键字:asp net MVC 详细信息 属性 显示 模型 | 更新日期: 2023-09-27 17:53:53
我有一个问题,我的CompanyName
模型MP
类属性不会在我的ASP的Ratings
详细信息页面中显示。. 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>
您实际上从未对这个值做过任何操作:
MP CompanyName = db.MedicalPractice.Find(id);
没有访问它的代码,一旦方法存在,值就消失了。当您试图访问视图中的值时:
@Html.DisplayFor(model => model.MP.CompanyName)
你试图访问模型上的属性,但你从未在模型上设置该属性。
据推测,根据代码/描述,你想做的是:ratings.MP = db.MedicalPractice.Find(id);
这将在ratings
对象(这是您的模型)上设置MP
属性,并允许您在视图中访问该属性。
在您的情况下,细节可能略有不同,因为您的对象结构和命名约定有点不清楚。但关键是你需要在模型上设置属性以便从模型中读取它们。模型不会知道你在控制器方法中创建的其他变量
使用.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);
}