2013-05-03 181 views
-1

我在控制器的以下方法通视图模型对象,以查看在asp.net MVC

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

} 

你能帮助我请

+2

如果您的视图代码必须知道关于XML文档的结构具体细节,你需要一个更好的视图模型。 – 2013-05-03 20:22:34

+0

javascript是客户端,在浏览器中,视图和模型是服务器端,您在服务器端生成html,浏览器接收到该html – Omu 2013-05-03 20:23:08

+0

您已经问过这个问题一次,完全相同的答案仍然适用:http:/ /stackoverflow.com/q/16351921/1043198 – 2013-05-03 22:19:04

回答

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> 
+0

非常感谢我解决了我的问题 – 2013-05-04 04:32:05

0

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

@foreach(var child in Model.Getxml().ChildNodes) 
{ 
    child.InnerText 
}