Ich habe eine solche Funktion in Javascript erstellt:
function addNewManufacturer() {
var name = $("#id-manuf-name").val();
var address = $("#id-manuf-address").val();
var phone = $("#id-manuf-phone").val();
var sendInfo = {
Name: name,
Address: address,
Phone: phone
};
$.ajax({
type: "POST",
url: "/Home/Add",
dataType: "json",
success: function (msg) {
if (msg) {
alert("Somebody" + name + " was added in list !");
location.reload(true);
} else {
alert("Cannot add to list !");
}
},
data: sendInfo
});
}
Ich habe die jquery.json-2.3.min.js
Skriptdatei aufgerufen und sie für die toJSON(array)
Methode verwendet.
In Controller habe ich diese Add
Aktion
[HttpPost]
public ActionResult Add(PersonSheets sendInfo) {
bool success = _addSomethingInList.AddNewSomething( sendInfo );
return this.Json( new {
msg = success
});
}
Aber sendInfo
als Methodenparameter wird null.
Das Model:
public struct PersonSheets
{
public int Id;
public string Name;
public string Address;
public string Phone;
}
public class PersonModel
{
private List<PersonSheets> _list;
public PersonModel() {
_list= GetFakeData();
}
public bool AddNewSomething(PersonSheets info) {
if ( (info as object) == null ) {
throw new ArgumentException( "Person list cannot be empty", "info" );
}
PersonSheets item= new PersonSheets();
item.Id = GetMaximumIdValueFromList( _list) + 1;
item.Name = info.Name;
item.Address = info.Address;
item.Phone = info.Phone;
_list.Add(item);
return true;
}
}
Wie kann ich in Aktion vorgehen, wenn die Daten mit POST gesendet wurden?
Ich weiß nicht, wie ich es benutzen soll. Ist es auch möglich, die Antwort (an Ajax) über JSON zurückzusenden?
jquery
ajax
asp.net-mvc
json
Schlangenaugen
quelle
quelle
Antworten:
Erstellen Sie ein Modell
Controller wie unten
Javascript
quelle
und in Aktion
Sie können Ihr Array so binden
hoffe das kann dir helfen.
quelle
Verwenden Sie
JSON.stringify(<data>)
.Ändern Sie Ihren Code:
data: sendInfo
indata: JSON.stringify(sendInfo)
. Hoffe das kann dir helfen.quelle
Um JSON zu veröffentlichen, müssen Sie es stringifizieren.
JSON.stringify
und setzen Sie dieprocessData
Option auf false.quelle
Ihre PersonSheets haben eine Eigenschaft
int Id
,Id
sind nicht im Beitrag enthalten, daher schlägt die Modellbindung fehl. Machen Sie Id nullbar (int?) Oder senden Sie mindestens Id = 0 mit der POst.quelle
Sie müssen nicht anrufen
$.toJSON
und hinzufügentraditional = true
würdest du.
quelle
Add(object[] sendInfo)
null!