2017-10-31 1 views
0

Ich möchte 2 Parameter mit Daten senden: mit Ajax. Einer der Parameter ist ein String, und dieser kommt immer auf der C# -Seite wie er sollte, aber der zweite Parameter, der ein Objekt ist, das aus wenigen Strings und Ints besteht, kommt immer leer zu der Funktion.Funktion erhält Null-Wert von einem der Parameter von Ajax Anruf

$.ajax({ 
     url : "/Clients/Create", 
     data: { client : client, country : country}, 
     method : "post" 
    }); 

Der interessante Teil ist, dass, wenn die Datei vom Browser js debuggen, die Debugger sagt, dass die Objekte alle enthalten sie sollten.

public void Create(Client client, string country) 
    { 
     //creates... 
    } 

Land param kommt direkt aus, aber alle Clients Werte sind entweder null oder 0 ich ihre Plätze tauschen versucht, um zu sehen, ob es etwas mit zu tun hat, da kein Glück. Ich habe auch mehrere Möglichkeiten ausprobiert, um "Daten: {Kunde: Kunde, Land: Land}" zu erstellen.

Client-Klasse:

public class Client 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string Address { get; set; } 
    public string City { get; set; } 
    public int Zip { get; set; } 
    public int CountryId { get; set; } 
    public Client() { } 
} 

Dies ist, wie ich das Objekt von einem Client in js zu bauen.

var client = { 
    Name : name, 
    Address : address, 
    City : city, 
    Zip : zip 
} 
+0

Controller Wie sieht Ihr 'Klient' aussieht? Welche spezifischen Daten kommen nicht? – Shyju

+0

Was ist in der Variable 'client'? Wie baut man es? – Shyju

+0

Ich habe ein wenig Mühe, diesen Code in den Kommentaren zu posten, sry, ich werde es in Frage bearbeiten Ich denke – kulijana

Antwort

0

Ich schlage vor, Sie wenn der Kunde ein MVC-Modell ist

var client = $.parseJSON('@Html.Raw(Json.Encode(yourModelClient))'); 
car country = "country"; 
var dataPlus = { 
       client : JSON.stringify(client),     
       country: country 
      }; 

ajax

$.ajax({ 
    url: '@Url.Action("Create", "Client")', 
    data: dataPlus, 
    method : "POST", 
}); 

dann

[HttpPost] 
public actionresult Create(Client client, string country) 
{ 

} 
+0

Es ist kein Mvc-Modell, ich sammle Daten, um einen Kunden zu machen. Ich habe zwar etwas Ähnliches wie die vorgeschlagene Lösung versucht. Ich habe JSON.stringify (client) erstellt und in das Äquivalent von dataPlus eingefügt. Wiederum nur das Land ging durch, der Kunde bleibt leer. – kulijana

+0

haben Sie versucht, json.string Ihre Sammeldaten aber var durch var etwas wie JSON.stringify ({ 'var': foo, 'var2': foo,}), –

+0

Ja, das war eine der Lösungen, die war hier gepostet, aber es gab kein Glück. – kulijana

Verwandte Themen