2016-12-04 2 views
0

Ich lese this und versuchte, die ViewDataDictionary in meiner App zu implementieren, hat aber nicht funktioniert.Übergabe von Daten von Sicht zu Partial in. NET CORE

Aus meiner Sicht habe ich den folgenden Code:

@{ 
    var myTest = new 
      { 
       UserId = "cdb86aea-e3d6-4fdd-9b7f-55e12b710f78", 
       UserName = "iggy", 
      }; 

} 
@Html.Partial("~/Partials/test.cshtml", myTest) 

und die test.cshtml ist sehr einfach, wenn ich @Model schreiben, erhalte ich { UserId = cdb86aea-e3d6-4fdd-9b7f-55e12b710f78, UserName = iggy }

Wie kann ich dies als JSON extrahieren, so ich kann @Model.UserName

lese ich versuchte, mit:

<script type="text/javascript"> 
@ 
    { 
     <text> 
      var obj = JSON.parse(@Model); 
     </text> 
    } 
</script> 

und versucht:

<script type="text/javascript"> 
     @:var obj = JSON.parse(@Model); 
</script> 

und versuchte:

@Html.Raw(Json.Encode(object)) 

aber nichts funktionierte, jede Hilfe !!

+0

Bitte zeigen die HTML, das bei Verwendung dieser Codeblöcke gerendert wird. – CodeCaster

+0

@CodeCaster bitte sehen Sie meine Kommentare zu Haim beantworten, wie ich dies vom Handy schreiben, schwer zu kopieren/fügen Sie meine commints wieder. Thankd –

+0

Können Sie eine Typklasse/ein Objekt anstelle des anonymen Typs verwenden? Auf diese Weise werden Sie das Intellisense nicht verwenden. – alltej

Antwort

0

stieß ich auf ähnliches Problem, wenn ich meine .net-Anwendung in .net Kern konvertieren. In .net ich konnte nur return Json (jsonModel) in meinem Controller und nutzen es aus meiner Sicht als data.UserID, data.UserName (Code unten angepasst sehen Ihre Probe übereinstimmen). In .net-Kern Ich musste zuerst SerializeObject in meinem Controller und dann JSON.parse in der Ansicht Javascript Abschnitt, damit es funktioniert.

Folgendes funktioniert in .NET CORE. Vorausgesetzt, dass Sie einige Modell haben:

public class SomeModel 
{ 
    public string UserId { get; set; } 
    public string UserName { get; set; } 
} 

in Ihrem Controller Rückkehr Json Objekt:

using Newtonsoft.Json; 

[HttpPost]   
public IActionResult someAction() 
{ 
    SomeModel jsonModel = new SomeModel(); 
    jsonModel.UserId = "cdb86aea-e3d6-4fdd-9b7f-55e12b710f78"; 
    jsonModel.UserName = "iggy"; 

    var serializedJsonModel = JsonConvert.SerializeObject(jsonModel); 
    return Json(serializedJsonModel); 
} 

und in der Ansicht JavaScript-Bereich Sie Werte aus dem Modell abrufen können:

<script type="text/javascript"> 
    $.post("@Url.Action("someAction", "YourController")", 
     function (data) { 
      var oJson = JSON.parse(data); 
      UserId = oJson.UserId; 
      UserName = oJson.UserName; }); 
</script> 
0

Wenn Sie nur an der JSON-Serialisierung Ihres anonymen Typs interessiert sind, können Sie einfach die @model der partiellen als object deklarieren.

in der Hauptansicht:

@{ 
    var myTest = new 
    { 
     UserId = "cdb86aea-e3d6-4fdd-9b7f-55e12b710f78", 
     UserName = "iggy", 
    }; 
} 

@Html.Partial("~/Partials/test.cshtml", myTest) 

Und in Ihrem test.cshtml Teil:

@model object 

<script type="text/javascript"> 
    var obj = @Html.Raw(Json.Encode(Model)); 
</script> 
+0

:(hat leider nicht mit meinem Fall funktioniert –

+0

@HasanAYousef, Was genau "funktioniert nicht"? Gibt es einen Fehler? – haim770

+0

nun, mein Fall ist etwas anders, als was ich tue, ist die 'Ansicht' in' string' zu konvertieren, was bisher gut mit mir in Ansichten und Teiltönen funktioniert, aber einmal die Notwendigkeit, das 'Model' zu lesen 'partially' als' JSON' etwas passiert ist, und die Seite nicht erscheint, arbeite ich mit diesem Beispiel http://stackoverflow.com/a/40950901/2441637 auf der Route 'api/returnView', kann ich Ihnen eine E-Mail schicken die Datei bei Interesse. –

Verwandte Themen