2017-06-18 40 views
1

我正在使用實體框架的ASP.Net MVC應用程序,並嘗試顯示我的模型中的值的問題。ASP.Net MVC實體框架不輸出模型與空列表的值

我有以下的模型被稱爲比爾類裏面出現

[Table("bill")] 
    public partial class Bill 
    { 
    [Key] 
    public int BillId { get; set; } 
    [Display(Name = "Bill Number")] 
    public string BillNumber { get; set; } 
    [Display(Name = "Title")] 
    public string Title { get; set; } 

    [ForeignKey("BillId")] 
    public virtual List<BillSubject> Subjects { get; set; } 
} 

和BillSubject如下定義BillSubjects的列表:

[Table("billSubject")] 
public partial class BillSubject 
{ 
    [Key] 
    public int SubjectId { get; set; } 
    public int BillId { get; set; } 
    public string Subject { get; set; } 
} 

代碼用於檢索時數據用戶點擊一個特定的賬單:我已經在這個代碼上放了一個斷點,在任何一種情況下都不會看到任何代碼問題。

 public ActionResult Bill(int billid) 
     { 
      Bill bill = db.bill.Find(billid); 
      if(bill == null) 
      { 
       return HttpNotFound(); 
      } 
      return View("~/Views/Bill/Bill.cshtml", bill); 
     } 

一些法案不會有科目,當我使用實體框架,它創建應罰款的對象內的空列表。 當我加載這個頁面的話題存儲在我的數據庫中的一切事物填充罰款,條例草案標題項目和主題計數之一。 但是,當我嘗試與沒有任何主題的條例草案,那麼一切都將呈現空。我通過瀏覽器查看源代碼,標題標籤只是h3標籤,內部沒有文本。

有什麼想法,我需要改變這個?

比爾查看:

@model RepresentWebApp.Models.Bill 
@{ 
    ViewBag.Title = "Bill"; 
} 

<h2>Bill</h2> 
<h3>@Html.DisplayName(Model.Title)</h3> 
<h3>@Html.DisplayName(Model.Subjects.Count())</h3> 

當我加載頁全HTML(包括我的頁頭,基本上ASP.Net默認):

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8" /> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <title>Bill - My ASP.NET Application</title> 
    <link href="/Content/bootstrap.css" rel="stylesheet"/> 
<link href="/Content/site.css" rel="stylesheet"/> 

    <script src="/Scripts/modernizr-2.6.2.js"></script> 


</head> 
<body> 
    <div class="navbar navbar-inverse navbar-fixed-top"> 
     <div class="container"> 
      <div class="navbar-header"> 
        <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> 
        <span class="icon-bar"></span> 
        <span class="icon-bar"></span> 
        <span class="icon-bar"></span> 
       </button> 
       <a class="navbar-brand" href="/">Application name</a> 
      </div> 
     <div class="navbar-collapse collapse"> 
      <ul class="nav navbar-nav"> 
       <li><a href="/">Home</a></li> 
       <li><a href="/Home/About">About</a></li> 
       <li><a href="/Home/Contact">Contact</a></li> 
      </ul> 
       <ul class="nav navbar-nav navbar-right"> 
    <li><a href="/Account/Register" id="registerLink">Register</a></li> 
    <li><a href="/Account/Login" id="loginLink">Log in</a></li> 
</ul> 

     </div> 
    </div> 
</div> 
<div class="container body-content"> 



<h2>Bill</h2> 
<h3></h3> 
<h3>0</h3> 






    <hr /> 
    <footer> 
     <p>&copy; 2017 - My ASP.NET Application</p> 
    </footer> 
</div> 

<script src="/Scripts/jquery-1.10.2.js"></script> 

<script src="/Scripts/bootstrap.js"></script> 
<script src="/Scripts/respond.js"></script> 



<!-- Visual Studio Browser Link --> 
<script type="application/json" id="__browserLink_initializationData"> 
    {"appName":"Chrome","requestId":"410cd4ef6a3c4f1a8a11ad3bd6972ab3"} 
</script> 
<script type="text/javascript" 
src="http://localhost:50287/130502d9b020420c9a2ea324e4312c38/browserLink" 
async="async"></script> 
<!-- End Browser Link --> 

</body> 
</html> 

HTML的條例草案,該主題將加載法案標題:

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8" /> 
<meta name="viewport" content="width=device-width, initial-scale=1.0"> 
<title>Bill - My ASP.NET Application</title> 
<link href="/Content/bootstrap.css" rel="stylesheet"/> 
<link href="/Content/site.css" rel="stylesheet"/> 

<script src="/Scripts/modernizr-2.6.2.js"></script> 


</head> 
<body> 
<div class="navbar navbar-inverse navbar-fixed-top"> 
    <div class="container"> 
     <div class="navbar-header"> 
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> 
       <span class="icon-bar"></span> 
       <span class="icon-bar"></span> 
       <span class="icon-bar"></span> 
      </button> 
      <a class="navbar-brand" href="/">Application name</a> 
     </div> 
     <div class="navbar-collapse collapse"> 
      <ul class="nav navbar-nav"> 
       <li><a href="/">Home</a></li> 
       <li><a href="/Home/About">About</a></li> 
       <li><a href="/Home/Contact">Contact</a></li> 
      </ul> 
       <ul class="nav navbar-nav navbar-right"> 
    <li><a href="/Account/Register" id="registerLink">Register</a></li> 
    <li><a href="/Account/Login" id="loginLink">Log in</a></li> 
</ul> 

     </div> 
    </div> 
</div> 
<div class="container body-content"> 



<h2>Bill</h2> 
<h3>A bill to award career pathways innovation grants to local educational agencies and consortia of local educational agencies, to provide technical assistance within the Office of Career, Technical, and Adult Education to administer the grants and support t</h3> 
<h3>1</h3> 






    <hr /> 
    <footer> 
     <p>&copy; 2017 - My ASP.NET Application</p> 
    </footer> 
</div> 

<script src="/Scripts/jquery-1.10.2.js"></script> 

<script src="/Scripts/bootstrap.js"></script> 
<script src="/Scripts/respond.js"></script> 



<!-- Visual Studio Browser Link --> 
<script type="application/json" id="__browserLink_initializationData"> 
{"appName":"Chrome","requestId":"cf9f70c608384cdb941887f9887ca6c2"} 
</script> 
<script type="text/javascript" src="http://localhost:50287/130502d9b020420c9a2ea324e4312c38/browserLink" async="async"></script> 
<!-- End Browser Link --> 

</body> 
</html> 
+1

ARNTû缺少一個迭代「),」在你的代碼的最後一行? –

+1

你能不能也請你發佈最終的html到瀏覽器中? –

+0

你可以發佈檢索數據的代碼嗎? –

回答

0

但瓦特如果我嘗試使用沒有任何主題的比爾,那麼所有內容都將呈現空白。我通過瀏覽器查看源代碼,標題標籤只是h3標籤,內部沒有文本。

如果你不希望在所有

@if(Model.Subjects.Count != 0) { //markup here }

顯示標記同樣,如果你不想當模型不存在,則顯示計數: @if(Model.Subjects.Count() != 0) @Model.Subjects.Count() 這將顯示值

如果你想顯示的字段的名稱 @Html.DisplayNameFor(a=>a.Title); 這將顯示名稱,而不是該字段的內容

如果你想在模型@Html.DisplayName(Model.Subjects); 字段的內容這將顯示字段@Model.Subjects將做相同的內容。

要顯示List<Subjects>主題,你需要通過列表

`@{ 
    if (Model.Subject != Null) { 
     foreach (var item in Model.Subjects){ 
      <h3> @item.Subject <h3> 
     } 
    } 
}`