我有一个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拆分为单独的数据结构,然后在剃刀中再次循环遍历该数据结构。但是出于性能原因,能够一次性完成这项工作会很好。
@model string
@{
Response.ContentType = "text/xml";
Layout = null;
}
<complete>
<option value=""><![CDATA[ ]]></option>
@foreach (var row in @Model)
{
<option value="@(row.Name)">@(row.Name)</option>
}
</complete>
答案 0 :(得分:1)
为了完整,这是我最后在剃须刀中所做的事情,谢谢你。我在控制器端封装了输出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[ ]]></option>
@foreach (XmlNode node in Model.xdoc.DocumentElement.ChildNodes)
{
<option value="@(node.Attributes[0].Value)">@(node.Attributes[0].Value)</option>
}
</complete>