2016-07-04 4 views
0

Я пытаюсь передать сериализованную строку json (сериализованную с использованием JsonConvert.SerializeObject) в таблицу html. Я хотел бы вызвать значения внутри строки json в таблице следующим образом: «model.jsonvalue». Я не уверен, как сделать переменные из строки json.MVC Json to HTML table

Моих Js строка:

{ 
    "stats": { 
    "global": { 
     "cache": { 
     "misses": "5" 
     }, 
     "download": { 
     "total-downloaded": "500" 
     }, 
     "error": { 
     "config-failed": "50", 
     "retries": "20" 
     }, 
     "instance": { 
     "resets": "2016-06-23 09:45:07" 
     }, 
     "servers": { 
     "server-in-config": "1", 
     "servers-running": "1", 
     "servers-relays": "1" 
     } 
    }, 
    "servers": { 
     "12345": { 
     "uptime": "0d, 18:01:30", 
     "retries": "0", 
     "download-size": "54664", 
     "server-restart": "1", 
     "download-time": "1", 
     "start-time": "2016-06-23 09:45:07", 
     "logic-time": "123", 
     "heartbeat": "1", 
     "logic-retry": "0" 
     }, 
     "44444": { 
     "start-time": "2016-06-23 09:45:07", 
     "download-time": "1", 
     "logic-time": "123", 
     "download-size": "54664", 
     "server-restart": "1", 
     "logic-retry": "0", 
     "uptime": "0d, 18:01:30", 
     "heartbeat": "1", 
     "retries": "0" 
     } 
    } 
    } 
} 

В моем контроллере я сериализовать следующим образом:

string json = System.IO.File.ReadAllText(@path); 
string jsonoutput = JsonConvert.SerializeObject(json); 

... и у меня есть контроллер для значений, которые я хочу, чтобы перейти к таблицам, как следовать :

public class Stats 
{ 
    public Global global { get; set; } 
    public List<server> servers { get; set; } 
} 

public class Global 
{ 
    public Cache cache { get; set; } 
    public Download download { get; set; } 
    public Error error { get; set; } 
    public Instance instance { get; set; } 
    public servers servers { get; set; } 
} 

Теперь я знаю, что есть много статей, объясняющих, как сделать это (я сделал Google), но я не хочу используйте ajax, javascript, нокаут или любые скрипты. Просто простой MVC.

Надеюсь, кто-то может помочь, поскольку я очень новичок в MVC и json.

+0

Я не думаю, что вы можете иметь MVC без JavaScript, и, насколько я знаю, единственный разумный способ работы с JSON является использование AJ AX. Нокаут фактически MVVC, который немного отличается от MVC. – TW80000

+1

, если вы не хотите использовать javascript, то JSON не так много смысла. Если вы просто хотите использовать представление MVC, напишите цикл с помощью бритвы, которая будет напрямую переводить элементы в вашей модели в строки в таблице HTML. – ADyson

ответ

1

Если вы хотите просто простой ASP MVC, тогда не конвертируйте данные из файла в json. Загрузите его в статически типизированных модели (Global класса) и просто передать его для просмотра из контроллера, то есть:

Контроллеры \ DataController.cs:

public class DataController : Controller 
{ 
    public ActionResult Index() 
    { 
     string data = System.IO.File.ReadAllText(@path); 
     var model = ConvertDataToModelSomehow(data); //model variable type: Global 
     return View(model); 
    } 
} 

Тогда вы можете просматривать и использовать модель - Просмотров \ Data \ Index.cshtml:

@model Global //your model type passed to view 

<table> 
    <thead> 
     <tr> 
      <th>Server name</th> 
     </tr> 
    </thead> 
    <tbody> 
    @foreach(var item in Model.servers) //if Global.servers will be collection 
    { 
     <tr> 
      <td>@item.Name</td> //if element has Name property 
     </tr> 
    }   
    </tbody> 
</table> 

More info here