如何显示来自数据库的模型属性名称?

时间:2016-01-26 02:29:49

标签: c# asp.net-mvc asp.net-mvc-4

我目前正在使用Entity Framework 5和MVC 5从视图中提取url列表。我有视图填充所有链接但我需要每个链接显示他们的'LinkState'名称,就像我的模型一样,所以它会输出:

  • 阿拉巴马
  • 佐治亚

链接附加到LinkState。而不是查看foreach循环说State Link。我无法得到我的模型/控制来提取正确的信息。

存储库:

public class LinkRepository
{
    private readonly LinkLibrary _entities = new LinkLibrary ();


    public LinkRepository()
    {
        _entities = new LinkLibrary ();
    }


    public List<LinkModels> RetrieveStateLink(string year)
    {
        return
            _entities.vw_URLLibrary.Where(s => s.YEAR.Equals(year) && s.URL_TYPE.Equals("United States")).Select(m => new LinkModels()
            {
                UrlLink = m.LinkLocation
            }).ToList();
    }
}

模型

public class LinkModels
{
    public string LinkYear { get; set; }
    public string LinkState { get; set; }
    public string UrlLink { get; set; }
    public string LinkType { get; set; }
    public List<string> ListOfUrls{ get; set; }
}

控制器

public ActionResult GetStateLinks()
    {
        var stateLink = new List<string>();
        var model = rr.RetrieveStateLinks("2014").Select(m=> m.UrlLink).ToList();
        foreach (var s in model)
        {
            stateLink.Add(s);
        }

        var rm = new LinkModels();
        rm.ListOfUrls = stateLink;

        return View(rm);
    }

查看

@foreach (var item in Model.StateLinkList)
        {
            <td>
                <a href="@item">State Link</a>
            </td>
        }

2 个答案:

答案 0 :(得分:2)

您的问题是您返回的是字符串列表而不是LinkModel列表。我更新了存储库以返回网址和链接名称

删除了控制器中的一些不必要的代码并更新它以使用LinkObjects列表。然后更新视图以显示信息。

您必须更新视图@model List<LinkModels>而不是@model List<string>

public class LinkRepository
{
    private readonly LinkLibrary _entities = new LinkLibrary ();


    public LinkRepository()
    {
        _entities = new LinkLibrary ();
    }


    public List<LinkModels> RetrieveStateLink(string year)
    {
        return
            _entities.vw_URLLibrary.Where(s => s.YEAR.Equals(year) && s.URL_TYPE.Equals("United States")).Select(m => new LinkModels()
            {
                LinkState = m.LinkState,
                UrlLink = m.LinkLocation
            }).ToList();
    }
}

public ActionResult GetStateLinks()
    {
        var stateLink = new List<LinkModels>();
        var model = rr.RetrieveStateLinks("2014");

        return View(model);
    }

@foreach (var item in Model)
        {
            <td>
                <a href="@item.UrlLink">@item.LinkState</a>
            </td>
        }

答案 1 :(得分:0)

<强>控制器

public ActionResult GetStateLinks()
{
    var model = rr.RetrieveStateLinks("2014");
    return View(model);
}

查看(将您的视图模型更改为LinkModel列表)

@foreach (var item in Model)
{
    <td>
        <a href="@item.UrlLink">@item.LinkState</a>
    </td>
}