【发布时间】: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