0

如果我正在检索单个元素,我可以使用拉取名为Name.

<li><span>System Name:</span>@(Model.Configuration.Root.Element("Name").Value)</li>

但是,当我有多个具有相同名称的元素时,它会告诉我,Sequence contains no elements即使我从代码隐藏中执行它,它也会给我元素。

XML 文件:

<root>
    <Port Num="1">
        <Device>
            <Firmware>1.0</Firmware> 
        </Device>
    </Port>
    <Port Num="2">
        <Device>
            <Firmware>1.0</Firmware> 
        </Device>
    </Port>
</root>

CSHTML 文件:

<li><span>Port: 1</span>Firmware: @(
Model.Configuration.Root.Elements("Port")
.Where(a=>a.Attribute("Num").Equals("1")).First()
.Element("Device").Element("Firmware").Value)</li>

我想从端口 #1 检索固件编号 (1.0)。

4

1 回答 1

3

.Attribute()返回一个XAttribute对象,它永远不能等于一个字符串。

您想比较属性的值:

Model.Configuration.Root.Elements("Port")
    .First(e => e.Attribute("Num").Value == "1")
    .Element("Device").Element("Firmware").Value
于 2013-05-29T15:22:19.803 回答