我在控制器中有以下方法
public ActionResult Categorized()
{
var x=new Test.Models.MobileClass();
return View(x);
}
x对象包含返回xmldocument数据的方法
如何传递此对象以查看访问方法并在浏览器中显示来自xmldocument的数据
我可以使用以下代码显示元素元素
document.writeln("@Model.getxml().ChildNodes.Count");
但是我想使用for循环显示对象的内容,以下代码在javascript中不起作用
var size=parseInt("@Model.Getxml().ChildNodes.Count");
for (var i=0; i<size; i++)
{
document.writeln("@Model.Getxml().ChildNodes[i].InnerText");
}
你可以帮我吗
答案 0 :(得分:1)
首先,你的观点不应该是调用Getxml并且使用XML DOM。控制器的工作是使用“准备渲染”数据显示视图。这就是ViewModel的用途。
public ActionResult Categorized()
{
var foo = new Test.Models.MobileClass();
var xml = foo.Getxml();
var viewData = xml.ChildNodes.Cast<XmlNode>().Select(x => x.InnerText);
return View(viewData);
}
现在我们将IEnumerable<string>
传递给视图,其中只包含我们想要渲染的值。
在视图中,您不应该使用javascript将数据呈现为HTML - 使用视图将数据呈现为HTML - Razor模板引擎非常擅长!有点像...
<ul>
@foreach (var item in Model) {
<li>@item</li>
}
</ul>
答案 1 :(得分:0)
javascript将失败,因为变量i将在服务器端进行评估,然后不存在。 使用剃须刀在视图中使用foreach:
@foreach(var child in Model.Getxml().ChildNodes)
{
child.InnerText
}