0

我有一个看起来像这样的 xml 字符串

<row Name="analog.__VG_SPP3_SFRTPCT" />
<row Name="analog._3305_LIST210_1" />
<row Name="analog._AG_5340_PR14AN" />
<row Name="analog._AG_EPNT_2" />
<row Name="analog._AG_EPNT_SP" />
<row Name="analog._AG_MERC_ERXTES" />
<row Name="analog._AG_ROC_TEST" />
<row Name="analog._AG_ROM1_LOAD" />
<row Name="analog._AG_TEST_CRC1LT" />
<row Name="analog._AG_TEST_CRC1RT" />
<row Name="analog._CWAV_TST_MDP1CV" />
<row Name="analog._CWAV_TST_MDP1CV_LIST" />

尝试为显示在 javascript 中的组合框生成选项列表,我试图循环通过 razor 中的 xml 字符串来生成它,但是我不太确定如何或者是否可能,我可以通过拆分来做到这一点xml 到一个单独的数据结构中,然后在 razor 中再次循环通过该数据结构。但是,出于性能原因,能够一口气完成此操作会很好。

@model string
@{
    Response.ContentType = "text/xml";
    Layout = null;
}
<complete>
    <option value=""><![CDATA[&nbsp;]]></option>
    @foreach (var row  in @Model)
    {
        <option value="@(row.Name)">@(row.Name)</option>  
    }
</complete>
4

1 回答 1

1

为了完整起见,这就是我最终用剃刀做的事情,谢谢pasty。我在控制器端封装了输出 xml 字符串,然后将其插入到 ComboData 结构中,当数据太大时,显然 razor 对纯字符串有问题。

控制器:

var Names = "<rows>" + oService.Names(ID) + "</rows>";
var oComboData = new ComboData(Names);
return View("ComboData", oComboData);

视图模型:

public class ComboData
{
    public ComboData(string sString)
    {
        xdoc = new XmlDocument();
        xdoc.LoadXml(sString);
    }

    public XmlDocument xdoc { get; set; }
}

看法:

@using System.Xml
@using ViewModels; 
@model ComboData
@{
    Response.ContentType = "text/xml";
    Layout = null;
}
<complete>
    <option value=""><![CDATA[&nbsp;]]></option>
    @foreach (XmlNode node in Model.xdoc.DocumentElement.ChildNodes)
    {
        <option value="@(node.Attributes[0].Value)">@(node.Attributes[0].Value)</option>
    }
</complete>
于 2013-06-13T15:19:05.307 回答