[英]Storing documents in database ASP.NET MVC5 with EF6 - code-first
[英].NET MVC5 EF Code first inheritance razor issue
我正在開發一個用於存儲和顯示費用的小型應用程序。
該應用程序相當簡單,會員有很多費用。 費用也可以具有FeeType。
我在通過剃刀語法顯示關聯記錄時遇到問題。
我需要在Fees表中顯示基於FeeTypesId的FeeTypeName,但似乎要撞牆了。 外鍵是FeeTypesId,對應於FeeTypes上的PK ID。
我要解決所有這些錯誤嗎? 我不想查詢每條記錄,因為Fees已經很好地存儲了ID。 楷模:
public class Members
{
[Key]
public int MemberNo { get; set; }
[Display(Name = "First Name")]
public string FirstName { get; set; }
[Display(Name = "Middle Name")]
public string MiddleName { get; set; }
[Display(Name = "Surname")]
public string Surname { get; set; }
[DataType(DataType.EmailAddress, ErrorMessage = "Invalid Email Address")]
[Display(Name = "Primary Contact Email")]
public string MemberPrimaryContactEmail { get; set; }
[Display(Name = "Member Status")]
public MemberStatus MemberStatus { get; set; }
[Display(Name = "Member Fees")]
public virtual ICollection<Fees> Fees { get; set; }
[Display(Name = "Member FUM")]
public float? MemberFUM { get; set; }
public string MemberWCName { get; set; }
public string MemberAdviceOSName { get; set; }
public string MemberRevexName { get; set; }
[Display(Name = "Accounting Firm")]
public virtual Accountants AccountantNo { get; set; }
[Display(Name = "Adviser Name")]
public virtual Adviser Adviser { get; set; }
[Display(Name = "Head Company")]
public virtual HeadCompany HeadCompany { get; set; }
public DateTime? Created_Date { get; set; }
public string Created_By { get; set; }
public DateTime? Modified_Date { get; set; }
public string Modified_By { get; set; }
}
public class Fees
{
[Key]
public int FeeNo { get; set; }
public FeeTypes FeeType { get; set; }
[Display(Name = "Fee Type")]
public int FeeTypesId { get; set; }
[Display(Name = "Frequency of Fee")]
public FeeOccurence FeeOccurence { get; set; }
[Display(Name = "Fee Amount")]
public float FeeAmount { get; set; }
[Display(Name = "Fee Status")]
public FeeStatus FeeStatus { get; set; }
[Display(Name = "Date received (for billing)")]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode = true)]
public DateTime? FeeDate { get; set; }
public virtual Members Members { get; set; }
public int MemberNo { get; set; }
public DateTime? Created_Date { get; set; }
public string Created_By { get; set; }
public DateTime? Modified_Date { get; set; }
public string Modified_By { get; set; }
}
public class FeeTypes
{
public int Id { get; set; }
[Display(Name = "Fee Name")]
public string FeeTypeName { get; set; }
}
控制器-我嘗試顯示FeeTypeName的位置
public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Members members = db.Members.Find(id);
ViewBag.Fees = db.Fees.Where(x => x.Members.MemberNo.Equals(x.MemberNo));
ViewBag.FeeTypesId = new SelectList(db.FeeTypes, "Id", "FeeTypeName");
if (members == null)
{
return HttpNotFound();
}
return View(members);
}
和看法
@model AccPortal.Models.Members
@{
ViewBag.Title = "Details";
}
@{ int i = 0; }
@foreach (var item in Model.Fees)
{
<tr data-id="@i">
@Html.HiddenFor(model => model.Fees.ElementAt(i).FeeNo, new { @class = "md-fee-value", name = "md-fee-id", data_type = "testid", id = "testid" })
<td class="md-fee-value" data-type="date">@String.Format("{0:d}", item.FeeDate)</td>
<td class="md-fee-value" data-type="type">@item.FeeOccurence</td>
//NEED TO DISPLAY FeeTypeName here instead of FeeTypesId
<td class="md-fee-value" data-type="type">@item.FeeTypesId</td>
<td class="md-fee-value" data-type="status">@item.FeeStatus</td>
<td class="md-fee-value" data-type="amount">@item.FeeAmount</td>
<td>
<button type="button" class="md-button md-button--edit" title="edit">
<span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
</button>
<button type="button" class="md-button md-button--remove" title="remove">
<span class="glyphicon glyphicon-remove" aria-hidden="true"></span>
</button>
</td>
</tr>
i++;
}
通過將屬性標記為virtual
修改Fees
模型:
public virtual FeeTypes FeeType { get; set; }
檢索數據時包括FeeType
:
ViewBag.Fees = db.Fees
.Include(x => x.FeeTypes)
.Where(x => x.Members.MemberNo.Equals(x.MemberNo));
顯示它:
<td class="md-fee-value" data-type="type">@item.FeeTypes.Name</td>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.