-1

我在控制器中有以下方法

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");

 }

你能帮我吗

4

2 回答 2

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>
于 2013-05-03T20:35:53.767 回答
0

javascript 将失败,因为变量 i 将在服务器端进行评估,然后不存在。在视图中使用 foreach,使用剃刀:

@foreach(var child in Model.Getxml().ChildNodes)
{
    child.InnerText
}
于 2013-05-03T20:37:44.010 回答