【问题标题】:Populating Multiple DropDownLists from XML (LINQ)从 XML (LINQ) 填充多个下拉列表
【发布时间】:2015-01-26 20:05:53
【问题描述】:

让我难以理解的简单 LINQ 查询。 google了好多遍,都没用。

我的 XML 文件:

<?xml version="1.0" encoding="utf-8" ?>
<Clients>
  <Client name="TestClient">
    <cat ID="1" value="Computers"/>
    <cat ID="2" value="Ayyy"/>
    <cat ID="3" value="lmao"/>
  </Client>

  <Client name="DoTheNeedful">
    <cat ID="1">ارومیه </cat>
    <cat ID="2">اشنویه </cat>
    <cat ID="3">بوکان </cat>
  </Client>
</Clients>

在我的视图模型中,有一个变量声明为:

public IEnumerable<SelectListItem> Category { get; set; }

我的 LINQ 查询:

        string path = Server.MapPath("~/Controllers/ClientConfig.xml");
        string whichDD = "TestClient";

        var model = new TicketViewModel
        {

            Category =
            from dropDown in XDocument.Load(path).Descendants("Client")
            where dropDown.Attribute("name").Value == whichDD
            from name in dropDown.Descendants("name")                                
            select new SelectListItem
            {
                Value = name.Attribute("ID").Value,
                Text = name.Attribute("value").Value
            }
        };

我的看法:

@model IEGTicketingSite.Models.TicketViewModel

@{
    ViewBag.Title = "Ticket";
}

@Html.DropDownListFor(x => x.CategoryID,
new SelectList(Model.Category, "Value", "Text"))

我正在尝试找到可以引用“TestClient”并获取下拉列表的地方

Computers
Ayyy
lmao

【问题讨论】:

  • C# binding dropdown to xml file 大量在线示例进行谷歌搜索
  • 我已经在谷歌上搜索过这个东西。给出的示例以一种不适用于多个列表的方式格式化他们的 XML 文件。
  • 不应该是dropDown.Descendants("cat")而不是dropDown.Descendants("name")吗? “Client”节点下没有“name”节点,只有“cat”节点。
  • 所以例如这样的东西行不通..? DataSet ddlDataSource = new DataSet(); ddlDataSource.ReadXml(MapPath("~/Controllers/ClientConfig.xml")); DropDownList1.DataSource = ddlDataSource; DropDownList1.DataBind();
  • @juharr 我试过了,但下拉列表仍然是空白的。

标签: c# xml asp.net-mvc linq


【解决方案1】:

juharr 解决了这个问题。

改变:

dropDown.Descendants("name")

到:

dropDown.Descendants("cat")

【讨论】:

    猜你喜欢
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    • 2017-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多