Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
ASP.NET Core - Wie bekomme ich initial Daten in die View?
_daniel_
myCSharp.de - Member



Dabei seit:
Beiträge: 227

Themenstarter:

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

beantworten | zitieren | melden

Hallo,

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

Mein bisheiger Ansatz

 var initialData = '@Json.Serialize(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?
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15.846

beantworten | zitieren | melden

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....
private Nachricht | Beiträge des Benutzers
Coffeebean
myCSharp.de - Team

Avatar #avatar-3295.gif


Dabei seit:
Beiträge: 2.207
Herkunft: Deutschland/Schweiz

beantworten | zitieren | melden

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.

public IActionResult Index()
{
        var viewModel = new MyViewModel();
        return View(viewModel);
}

und in der View dann oben
@model ... .MyViewModel

und dann kannst du mit Razor damit arbeiten:
@(Model.Value1)

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

Ist es das, was du meinst?

Gruss

Coffeebean
private Nachricht | Beiträge des Benutzers
_daniel_
myCSharp.de - Member



Dabei seit:
Beiträge: 227

Themenstarter:

beantworten | zitieren | melden

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.

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.

  $(function () {
            var json= '@Json.Serialize(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

  $.ajax(..
 success: function (result) {
                  alert(result.EinText);
 }
...
ist EinText korrekt.
Die zugehörige Controller Funktion:

        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?
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15.846

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Coffeebean
myCSharp.de - Team

Avatar #avatar-3295.gif


Dabei seit:
Beiträge: 2.207
Herkunft: Deutschland/Schweiz

beantworten | zitieren | melden

Hallo _daniel_,

wieso willst du das als JSON serialisieren?

Gruss

Coffeebean
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15.846

beantworten | zitieren | melden

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:

@Html.Raw(Json.Encode(Model.EinText))
private Nachricht | Beiträge des Benutzers
_daniel_
myCSharp.de - Member



Dabei seit:
Beiträge: 227

Themenstarter:

beantworten | zitieren | melden

@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?
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15.846

beantworten | zitieren | melden

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/ASPNET-Foodchooser-Cross-Platform-Angular2
private Nachricht | Beiträge des Benutzers