myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
   » Plugin für Firefox
   » Plugin für IE
   » Gadget für Windows
» Regeln
» Wie poste ich richtig?
» Datenschutzerklärung
» wbb-FAQ

Mitglieder
» Liste / Suche
» Stadt / Anleitung dazu
» Wer ist wo online?

Angebote
» ASP.NET Webspace
» Bücher
» Zeitschriften
   » dot.net magazin

Ressourcen
» guide to C#
» openbook: Visual C#
» openbook: OO
» MSDN Webcasts
» Search.Net

Team
» Kontakt
» Übersicht
» Wir über uns
» Impressum

» Unsere MiniCity
MiniCity
» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Web-Technologien » ASP.NET Core - Wie bekomme ich initial Daten in die View?
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

ASP.NET Core - Wie bekomme ich initial Daten in die View?

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
_daniel_
myCSharp.de-Mitglied

Dabei seit: 31.05.2006
Beiträge: 227


_daniel_ ist offline

ASP.NET Core - Wie bekomme ich initial Daten in die View?

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,

wie handhabt ihr das Bereitstellen von Initialen Daten in der View?

Mein bisheiger Ansatz

C#-Code:
var initialData = [email protected](Model)';

versagt leider beim JSON.parse, wenn Anführungszeichen " in einem Text enthalten sind.

Der Rückgabewert einer Controller Action allerdings escaped die Anführungszeichen richtig.

Wie kann ich das in der View auch bewerkstelligen?
12.01.2017 00:25 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

images/avatars/avatar-2981.png


Dabei seit: 20.07.2008
Beiträge: 10.070
Herkunft: Süddeutschland


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

ASP.NET ist zwar meine Heimattechnologie, aber ich hab nicht den Hauch eines Schimmers, was Du meinst.
Kannst Du das Problem evtl. so erklären, dass das auch jemand versteht, der nicht vor Deinem Code sitzt?

Vllt erklärst Du einfach, was Du erreichen willst....
12.01.2017 09:23 Beiträge des Benutzers | zu Buddylist hinzufügen
Coffeebean Coffeebean ist männlich
myCSharp.de-Team

images/avatars/avatar-3295.gif


Dabei seit: 25.08.2011
Beiträge: 1.890
Entwicklungsumgebung: VS 2005-2017, VS Code
Herkunft: Deutschland/Schweiz


Coffeebean ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo _daniel_,

ich hab von ASP.NET auch mal was gehört ;-) ...aber so wirklich schnalle ichs auch nicht. Ich versuche mal zu erahnen was du vorhast.

Wenn du im ASP.NET Core MVC Daten an eine View geben willst kannst du das einfach via einem ViewModel machen.

C#-Code:
public IActionResult Index()
{
        var viewModel = new MyViewModel();
        return View(viewModel);
}

und in der View dann oben

Code:
1:
@model ... .MyViewModel

und dann kannst du mit Razor damit arbeiten:

Code:
1:
@(Model.Value1)

Die View wird ja serverseitig fertig gemacht. Und dann zum Client geliefert.

Ist es das, was du meinst?

Gruss

Coffeebean
12.01.2017 11:14 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
_daniel_
myCSharp.de-Mitglied

Dabei seit: 31.05.2006
Beiträge: 227

Themenstarter Thema begonnen von _daniel_

_daniel_ ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,

sorry für die maue Erklärung. Neuer Versuch:

Im Controller habe ich etwa folgendes. Also ein einfaches ViewModel mit einem Property in dem zwei " vorkommen.

C#-Code:
public IActionResult Index()
{
        var viewModel = new MyViewModel();
        viewModel.EinText= "a\"b\"c";
        return View(viewModel);
}

In der View will ich nun ein Js Object aus dem Json machen.

Code:
1:
2:
3:
4:
  $(function () {
            var json= [email protected](Model)';
            var test = JSON.parse(json);
        });

Erwarten würde ich nun dass in test.EinText der entsprechende Text steht.

Das Problem ist nun, dass der Fehler "Invalid character" kommt.


Lade ich das ganze mit einem ajax request

Code:
1:
2:
3:
4:
5:
  $.ajax(..
 success: function (result) {
                  alert(result.EinText);
 }
...

ist EinText korrekt.
Die zugehörige Controller Funktion:

C#-Code:
        public IActionResult GetIt()
        {
            var vm = new TestVm();
            vm.EinText = "a\"b\"c";
            return Ok(vm);
        }

Scheinbar geht bei "@Json.Serialize(Model)" die Anführungszeichen nicht korrekt escaped.
Wie kann ich das Problem beheben?
12.01.2017 13:59 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

images/avatars/avatar-2981.png


Dabei seit: 20.07.2008
Beiträge: 10.070
Herkunft: Süddeutschland


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Dir ist schon bewusst, dass man so eigentlich kein Json zum Client schickt, oder?

Ich würde an Deiner Stelle mit Newtonsoft.Json arbeiten, nicht mit dem .NET Framework Json Serializer; der hat paar Macken und ist grässlich langsam.
12.01.2017 14:11 Beiträge des Benutzers | zu Buddylist hinzufügen
Coffeebean Coffeebean ist männlich
myCSharp.de-Team

images/avatars/avatar-3295.gif


Dabei seit: 25.08.2011
Beiträge: 1.890
Entwicklungsumgebung: VS 2005-2017, VS Code
Herkunft: Deutschland/Schweiz


Coffeebean ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo _daniel_,

wieso willst du das als JSON serialisieren?

Gruss

Coffeebean
12.01.2017 14:19 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

images/avatars/avatar-2981.png


Dabei seit: 20.07.2008
Beiträge: 10.070
Herkunft: Süddeutschland


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Er hat offensichtlich JavaScript-Code in einer View.
Diesem Code will er ein Json direkt mit übergeben, das vom ViewModel kommt.

Vermutlich will er, wenn ich es jetzt so überlege:

C#-Code:
@Html.Raw(Json.Encode(Model.EinText))
12.01.2017 14:22 Beiträge des Benutzers | zu Buddylist hinzufügen
_daniel_
myCSharp.de-Mitglied

Dabei seit: 31.05.2006
Beiträge: 227

Themenstarter Thema begonnen von _daniel_

_daniel_ ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

@Abt danke. So funktionierts.

Wie ist sonst der Weg, um die Daten in die View zu bekommen? Also vor allem bei Frameworks wie angular oder react?
Einen zweiten Aufruf eines Services wollte ich mir sparen.


@Abt Du meinst die GetIt ist falsch? Da wird ja eigentlich kein Json geschickt?
12.01.2017 14:36 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

images/avatars/avatar-2981.png


Dabei seit: 20.07.2008
Beiträge: 10.070
Herkunft: Süddeutschland


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

GetIt ist egal, aber eigentlich gehört in eine ASP.NET MVC View kein Json, sondern nur HTML.
Da gehört auch kein JavaScript rein. JavaScript gehört in JavaScript Dateien und nicht eingebettet in divs und Co.

Single Page Applications wie React oder Angular(2) haben gar keinen MVC Anteil mehr, sondern nur noch eine WebAPI, die Json liefert.
Es gibt also keine HTML Views mehr auf der Server-Seite.

Beispiel von Coffeebean dazu:  https://github.com/FabianGosebrink/ASPNE...atform-Angular2
12.01.2017 15:00 Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 5 Monate.
Der letzte Beitrag ist älter als 5 Monate.
Antwort erstellen


© Copyright 2003-2017 myCSharp.de-Team. Alle Rechte vorbehalten. 28.06.2017 02:07