2013-05-03 177 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 
}