需要帮助在MVC 5中的DataTable中显示名称而不是GUID

时间:2018-04-06 16:26:57

标签: asp.net-mvc-5 datatables

我需要一些帮助,在MVC 5中的DataTable中显示名称而不是GUID。

我按照本教程实施了DataTable:https://www.c-sharpcorner.com/article/ajax-crud-operation-with-jquery-datatables-in-asp-net-mvc-5-for-beginners/

我正在尝试显示市区,市政和客户身份的名称。它在我的详细信息视图模型中显示完全正常,但它在DataTable中显示GUID。我花了好几天试图弄明白这一点无济于事。

以下是我的控制器中DataTable的代码:

public ActionResult Get([ModelBinder(typeof(DataTablesBinder))] IDataTablesRequest requestModel, ClientsAdvancedSearchViewModel searchViewModel)
    {
        IQueryable<Client> query = DbContext.Clients;
        var totalCount = query.Count();

        // searching and sorting
        query = SearchClients(requestModel, searchViewModel, query);
        var filteredCount = query.Count();

        // Paging
        query = query.Skip(requestModel.Start).Take(requestModel.Length);

        var data = query.Select(client => new
        {
            ClientIdentifier = client.ClientIdentifier,
            CompanyName = client.CompanyName,
            ClientContactPerson = client.ClientContactPerson,
            ClientEmail = client.ClientEmail,
            ClientTel = client.ClientTel,
            Consultant = client.Consultant,
            Town = client.Town,
            Suburb = client.Suburb,
            MunicipalRegionID = client.MunicipalRegionID,
            MunicipalityID = client.MunicipalityID,
            ClientStatusID = client.ClientStatusID,
        }).ToList();

        return Json(new DataTablesResponse(requestModel.Draw, data, filteredCount, totalCount), JsonRequestBehavior.AllowGet);

    }

以下是我的客户端类的代码:

public class Client
{
    [Key]
    public System.Guid ClientIdentifier { get; set; }

    public string CompanyName { get; set; }

    public string SiteName { get; set; }

    public string Status { get; set; }

    public string Consultant { get; set; }

    public string Comments { get; set; }

    [DataType(DataType.Date)]
    [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
    public Nullable<System.DateTime> Date { get; set; }

    public string ClientInformation { get; set; }

    public string ClientContactPerson { get; set; }

    public string ClientEmail { get; set; }

    public string ClientTel { get; set; }

    public string ClientAddress { get; set; }

    public string GPSCoordinates { get; set; }

    public string Town { get; set; }

    public string Suburb { get; set; }

    public System.Guid MunicipalRegionID { get; set; }

    public System.Guid MunicipalityID { get; set; }

    public System.Guid ClientStatusID { get; set; }

    public string CreatedBy { get; set; }

    public Nullable<System.DateTime> DateCreated { get; set; }

    public string LastEditedBy { get; set; }

    public Nullable<System.DateTime> DateLastEdited { get; set; }

}

以下是我的市区类别的代码:

public class MunicipalRegion
{
    [Key]
    public System.Guid MunicipalRegionIdentifier { get; set; }

    public string MunicipalRegionName { get; set; }

    public string CreatedBy { get; set; }

    public Nullable<System.DateTime> DateCreated { get; set; }

    public string LastEditedBy { get; set; }

    public Nullable<System.DateTime> DateLastEdited { get; set; }
}

以下是我的市政类的代码:

public class Municipality
{
    [Key]
    public System.Guid MunicipalityIdentifier { get; set; }

    public string MunicipalityName { get; set; }

    public System.Guid MunicipalRegionID { get; set; }

    public string CreatedBy { get; set; }

    public Nullable<System.DateTime> DateCreated { get; set; }

    public string LastEditedBy { get; set; }

    public Nullable<System.DateTime> DateLastEdited { get; set; }

以下是我的客户状态类的代码:

public class ClientStatus
{
    [Key]
    public System.Guid ClientStatusIdentifier { get; set; }

    public string ClientStatusName { get; set; }

    public string CreatedBy { get; set; }

    public Nullable<System.DateTime> DateCreated { get; set; }

    public string LastEditedBy { get; set; }

    public Nullable<System.DateTime> DateLastEdited { get; set; }
}

帮助将不胜感激。谢谢:))

1 个答案:

答案 0 :(得分:0)

我可能错了,但听起来你正试图隐藏生成视图中的关键字段。这可以通过添加以下注释来完成。

[Display(AutoGenerateField=false)]

好的,我看到你现在要做的事情。主要问题是您的类未正确设置。从数据库的角度来看,它们是正确的,但从课堂的角度来看,它们不会返回你想要的东西。

您需要按以下方式设置课程

客户等级

public Client()
        {
            Municipality = new Municipality();
            Status = new ClientStatus();            
        }

        [Key]
        public System.Guid ClientIdentifier { get; set; }

        public string CompanyName { get; set; }

        public string SiteName { get; set; }

        public string Consultant { get; set; }

        public string Comments { get; set; }

        [DataType(DataType.Date)]
        [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
        public Nullable<System.DateTime> Date { get; set; }

        public string ClientInformation { get; set; }

        public string ClientContactPerson { get; set; }

        public string ClientEmail { get; set; }

        public string ClientTel { get; set; }

        public string ClientAddress { get; set; }

        public string GPSCoordinates { get; set; }

        public string Town { get; set; }

        public string Suburb { get; set; }

        public string CreatedBy { get; set; }

        public Nullable<System.DateTime> DateCreated { get; set; }

        public string LastEditedBy { get; set; }

        public Nullable<System.DateTime> DateLastEdited { get; set; }

        // Create Forign Key Connections

        public Municipality Municipality { get; set; }

        public ClientStatus Status { get; set; }

    }

市级

public class Municipality
{
    public Municipality() {
        MunicipalRegion = new MunicipalRegion();
    }

    [Key]
    public System.Guid MunicipalityIdentifier {
        get;
        set;
    }

    public string MunicipalityName { get; set; }

    public string CreatedBy { get; set; }

    public Nullable<System.DateTime> DateCreated { get; set; }

    public string LastEditedBy { get; set; }

    public Nullable<System.DateTime> DateLastEdited { get; set; }

    public MunicipalRegion MunicipalRegion { get; set; }

}

这将允许您使用类似于

的内容生成输出
        var data = clients.Select(cl => new
        {
            ClientIdentifier = cl.ClientIdentifier,
            CompanyName = cl.CompanyName,
            MunicipalRegion = cl.Municipality.MunicipalityName,
            Status = cl.Status.ClientStatusName
        });