簡體   English   中英

.NET MVC5 EF代碼首次繼承剃須刀問題

[英].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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM