Laden...
D
Diräkt
myCSharp.de - Member
92
Themen
615
Beiträge
Letzte Aktivität
vor 7 Monaten
Dabei seit
05.11.2009
Alter
38
Herkunft
Schweiz
Interessen
.Net, Squash, Schach
Website
Erstellt vor einem Jahr

Hallo

Verstehe ich es richtig, du willst Json Posten auf ein "Controller" und kein Model für die einzelnen Parameter erstellen?

Wenn du das wirklich machen willst, kannst du dies indem du eine "JsonValueProviderFactory" registirert und ein "JsonValueProvider".
Somit kannst du den Support für Json nachträglich wieder einbauen 😉.

In der JsonValueProviderFactory liest du den Request aus, schaust ob es Json ist, deserialisiert den Inhalt und prüfst ob bspw. die Anzahl Parameter passen und deren Namen.... Sollte das alles passen, kannst du dem Context den JsonValueProvider mitgeben, etwa so:

public class JsonValueProviderFactory : IValueProviderFactory
 {
 public async Task CreateValueProviderAsync(ValueProviderFactoryContext context)
       {
           if (context == null)
           {
               throw new ArgumentNullException(nameof(context));
           }
          //we are only interested in "body" attribute since we are extracting the body, ignore from Query Attribute
          var parameters = context.ActionContext.ActionDescriptor.Parameters.Where(r => r.BindingInfo?.BindingSource?.Id != BindingSource.Query.Id).ToList();
          //do validation, read stream body, check if json, deserialize ...  wenn nun alles passt
          context.ValueProviders.Add(new JsonValueProvider(jObject));
      }
 }

Der JsonValueProvider kann dann etwa so aussehen

public class JsonValueProvider : IValueProvider
   {
       private readonly JObject m_jObject;
       public JsonValueProvider(JObject jObject)
       {
           m_jObject = jObject;
       }
       public bool ContainsPrefix(string prefix)
       {
           return m_jObject.ContainsKey(prefix);
       }
       public ValueProviderResult GetValue(string key)
       {
           return new ValueProviderResult(new StringValues((string)m_jObject[key]));
       }
   }

Nicht vergessen die JsonValueFactory zu registrieren im Startup

options.ValueProviderFactories.Add(new JsonValueProviderFactory());

Viel Spass

Erstellt vor 2 Jahren

Hallo FrankyD95

Ich würde ein ViewModel erstellen. Dieses kann bspw. ein Property haben "bool Authorized". Alle Buttons binden Ihr Enabled Property nun auf dieses ViewModel Property "Authorized".

Edit:
Databinding

Erstellt vor 2 Jahren

Wenn die Schriftart vorhanden ist, kannst du sie mit dem Namen ansprechen (siehe Font ctor). Sonst kannst du ein Pfad angeben wo diese gefunden wird.

Lg

Erstellt vor 2 Jahren

Hallo

Es gibt dafür einige Komponenten welche das können, wenn du nach "replace fonts in pdf c#" googelst, findest du diese 🙂
Ich würde das nicht selbst machen wollen, hoffe du kannst eine fertige Komponente einsetzen.

Am einfachsten ist das Vorgehen etwa so:

  • PDF laden
  • Verwendete Schriftarten ersetzen

Wenn du dies nur für gewisse Texte machen willst etwa so:

  • PDF laden
  • Text suchen
  • Ersetzen mit Text mit deiner Schriftart

Beispiele:

Spire PDF
Syncfusion
Aspose
usw....

Erstellt vor 3 Jahren

Hallo Kriz

Ich würde Dir von FTP abraten (auch von den sichereren Varianten wie FTPS oder SFTP). Nutze dafür besser eine REST API (bspw. ASP.NET Core Web Api) und lege die Bilder in einem BlobStorage ab. Die Authentifizierung kannst du da bspw. über ein Token im Header machen... (OAuth, ...)

Nun zu Deiner Frage. Dein Controller könnte die ersten paar bytes auslesen und daran erkennen ob es sich um ein Bild handelt.

(Achtung bei sehr vielen Requests könnte das recht Memory intensiv werden 😉)

Beste Grüsse

Diräkt

Erstellt vor 3 Jahren

Ein Kumpel meinte es wäre besser das mit SignalR

Irgendwo brauchst du ein Backend um Pub/Sub (siehe erste Antwort) zu managen. SignalR kannst du im Frontend einsetzen um anhand von Notifications eines WebHook im GUI etwas anzuzeigen oder was anderes zu wurschteln 🙂

Woanders bekam ich den Vorschlag es mit SSE

Hier sind die Unterschiede erklärt.

Beste Grüsse

Erstellt vor 3 Jahren

Guten Tag

Eigentlich stellst du Events zur Verfügung. Die Subscriber können solche abonnieren um über "Änderungen" informiert zu werden. Dafür kannst du bspw. ein Pub/Sub Pattern verwenden.

Ein schöner Artikel mit ausführlichen Beschreibung findest du in diesem Blog.

Liebe Grüsse

Erstellt vor 3 Jahren

Hallo Krumnix

Ich würde Dir empfehlen, dass File gar nicht zu speichern sondern bei Bedarf "on-the-fly" zu generieren.

Um auf Deine Frage einzugehen:
Da gibt es sehr viele Wege dazu, vom einfachen string.Replace() bis hin zu "data templating".

Als Idee, schau Dir mal folgendes an:
templated-serialization-of-c-sharp-objects-to-json
https://www.abhishek-tiwari.com/jsonnet-a-data-templating-language-from-google/

Erstellt vor 5 Jahren

Ich möchte eine eigene Implementierung für ClientValidatorCache verwenden.

Problem:
-> Die Klasse besitzt kein Interface
-> Die Methode GetValidators ist nicht virtual
-> _cacheEntries ist private

Was ich versucht habe:
-> Von der Klasse erben und GetValidators "hiden" mit new GetValidators(...)

Es wird zwar meine Klasse verwendet jedoch klappt das "hiden" nicht wirklich, es wird die Basis-Methode aufgerufen.

Jemand eine Idee?

Ziel:
-> Properties von meinem Model können zur Laufzeit bspw. mit "Required" markiert werden. Serverseitig funktioniert alles (ModelBinder sind ja schön erweiterbar ...), jedoch werden die client-validatoren gecached und ClientValidatorCache ist nicht wirklich gut erweiterbar... Dies führt dazu, dass der gecachte validator benutzt wird ungeachtet der neuen ValidationMetaData.

Framework:
asp.net core 3.1

Erstellt vor 5 Jahren

Hallo Darkblue94

Du könntest bspw. ein Enum erstellen ? l? :

None = 0,
Januar =1,
Februar =2
....

Dann könntest du den String in den Enum parsen und damit rechnen.

(MyEnum)Enum.Parse(typeof(MyEnum), stringInput);

Ich würde mir überlegen anstatt TextBoxen dann gleich DropDowns zu verwenden, dann kannst du den Value definieren. Dann könntest aber auch auf den Enum verzichten und als Value für Januar gleich 1 verwenden.

Beste Grüsse

Diräkt

10 von 614 Beiträgen