模型属性没有显示在详细信息页中.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>

模型属性没有显示在详细信息页中.asp.net MVC 5

您实际上从未对这个值做过任何操作:

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);
}