2013-05-03 2 views
1

Я создал объект класса контроллера в ASP.NET MVC и передать его для просмотра страницы с помощью модели представления,создать объект ViewModel ввиду в ASP.NET MVC

Этот объект имеет множество методов, которые возвращают другой тип данных (xmldocument, string, int, array и т.д.)

Я использовал следующий способ получить доступ к любым методам @Model.Getxml().ChildNodes.Count" "@Model.Getxml().ChildNodes[0].InnerText

я хочу объявить переменные этот объект в JavaScript и вызывать любые методы, Я хочу от переменной, как th е следующие

var [email protected]

А затем получить доступ к любым методам из obj переменной

Но у меня есть проблема, когда я пишу цикл для отслеживания элементов в массиве, как в следующем

var size=parseInt("@Model.Getxml().ChildNodes.Count"); 
for (var i=0; i<size; i++) 
{ 
    document.writeln ("@Model.Getxml().ChildNodes[i].InnerText"); 
} 

Этот код Бесполезный «Работа, помощь будет оценена по достоинству.

ответ

1

Вы путаете серверный код (C#) и код на стороне клиента (JavaScript)

Вы должны преобразовать значения в JSON или XML и положить в скрытом поле и обработать значение в скрытом поле в цикл в JavaScript ака стороне клиента ..


Чтобы помочь вам определить код на стороне сервера

@Model.Getxml().ChildNodes.Count и @Model.Getxml.ChildNodes[i].InnerText являются серверный код, который Cann невоз- можно объединить в вашем конкретном случае с Javascript кодом


Чтобы помочь вам определить код на стороне клиента

var size=parseInt(<variable>); 
for (var i=0; i<=0; i++) 
{ 
    document.writeln ("<Text>"); 
} 

В настоящее время я предполагаю, что это будет печатать столько раз, кол-во

@ Model.Get xml.ChildNodes [я] .InnerText
@ Model.Getxml.ChildNodes [я] .InnerText

+0

спасибо Harsh Baid за ваш ответ, id У меня есть следующий код в контроллере public ActionResult Категория ( {var x = new Test.Models.MobileClass(); return View (x);} как его сохранить в скрытом поле? x включают члены метода, которые возвращают xml-данные. Не могли бы вы мне помочь –

0

An alterntive в ответ суровая Baid было бы создать цикл в бритве, а не в Javascript, то есть создать петля Бритва выписывать линии JS, например, так:

<script type="text/javascript"> 
@foreach(var node in Model.Getxml().ChildNodes) 
{ 
    @String.Format("document.writeln(\"{0}\");", node.InnerText) 
} 
</script> 

Это будет что-то вроде следующего:

<script type="text/javascript> 
    document.writeln("Inner text 1!"); 
    document.writeln("More inner text!"); 
    document.writeln("etc."); 
    document.writeln("etc."); 
    document.writeln("etc."); 
</script> 

в данном случае на стороне сервера код перебирает эти значения, как это т он только имеет доступ к ним. Затем он эффективно записывает кучу строк клиентского кода с жестко закодированными строками.Это не самое элегантное решение, но это может помочь вам понять разницу.

Это отличие от того, что вы сейчас пытаетесь сделать, что выписывает Javascript, который будет перебирать эти значения, чего он не может сделать, потому что эти значения больше не существуют, когда Javascript делает свою вещь.

Смежные вопросы