2017-08-29 1 views
0

Im Moment habe ich diese haben, wie mein Code:Get Json von Web api und passieren auf Teilansicht von der Steuerung

public ActionResult Search(SearchModel model) 
    { 
     string url = "http://10.0.2.31/testwebapi/api/data"; 
     WebClient wc = new WebClient(); 

     wc.QueryString.Add("forename", model.Forename); 
     wc.QueryString.Add("surname", model.Surname); 
     wc.QueryString.Add("caseid", model.CaseId); 
     wc.QueryString.Add("postcode", model.Postcode); 
     wc.QueryString.Add("telephone", model.Telephone); 
     wc.QueryString.Add("email", model.Email); 
     wc.QueryString.Add("title", model.Title); 

     var data = wc.UploadValues(url, "POST", wc.QueryString); 


     var responseString = Encoding.Default.GetString(data); 

     return PartialView("~/Views/Shared/SearchResults.cshtml", responseString); 

    } 

    public class RootObject 
    { 
     public int Caseid { get; set; } 
     public string Title { get; set; } 
     public string Forename { get; set; } 
     public string Surname { get; set; } 
     public string Postcode { get; set; } 
     public string Telephone { get; set; } 
     public string Email { get; set; } 
     public string DOB { get; set; } 
     public string Mobile { get; set; } 
     public string MaritalStatus { get; set; } 
     public string LoanPurpose { get; set; } 
     public bool CourtesyCall { get; set; } 
     public string isOpen { get; set; } 
    } 

im nicht sicher, wo ich falsch gehe ich will es in der Lage sein, diese Daten zu ziehen aus dem Web-API (die eine JSON-Datei zurückgibt). dann, was ich tun möchte, ist, senden Sie diese Daten bis zu meiner Teilansicht, wo eine @foreach-Anweisung wird es in eine Tabelle setzen, aber ich kann nicht scheinen, um es zu senden die Daten es als eine Zeichenfolge interagiert und ich weiß nicht, warum

dies ist, wie es zurückkehrt:

enter image description here

@model string 
@{ 
    Layout = null; 
} 

@foreach(var Case in Model) 
{ 
    <p>@Case</p> 
} 

Teilansicht Code.

Dies ist, was mein Teil sieht nun wie:

@model IEnumerable<Savvy_CRM_MVC.Models.RootObject> 
@{ 
    Layout = null; 
} 
@foreach (var m in Model) 
{ 
    <p>@m</p> 
} 

, die, wenn ich durch die laufen für jeden ist mir diese Savvy_CRM_MVC.Models.RootObject gibt

+1

Was ist der Code für Ihre Teilansicht – BurnsBA

+0

@BurnsBA hat es für Sie am Ende hinzugefügt –

+0

Wenn Sie für eine Zeichenfolge iterieren (die aufzählbar ist), werden Sie jedes Zeichen auswerten. – BurnsBA

Antwort

1

Das Problem ist, dass Sie Sie Modell sind verbindlich zu der rohen JSON-Zeichenfolge.

Sie müssen die JSON-Zeichenfolge zu Ihrer RootObject-Klasse deserialisieren und RootObject als Modell für Ihre Ansicht verwenden.

der folgende Code Benutzer Newtonsoft JSON.net, um die Zeichenfolge zu deserialisieren;

var rootObjects = JsonConvert.DeserializeObject<RootObject[]>(responseString); 

return PartialView("~/Views/Shared/SearchResults.cshtml", rootObjects); 

und Sie sehen ändert

@model IEnumerable<RootObject> 

Sie werden auch Sie ändern müssen zeigen Sie die Eigenschaften des Modells anzuzeigen.

+0

@model RootObject [] ist –

+0

aktualisiert die Modell-Deklaration aktualisiert. – Fran

+0

Noch unterstrichener Spruch "der Typ oder Namespace von 'RootObject' konnte nicht gefunden werden –