J'ai créé une fonction en javascript comme ça:
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
});
}
J'ai appelé le jquery.json-2.3.min.js
fichier de script et je l'ai utilisé pour la toJSON(array)
méthode.
Dans le contrôleur, j'ai cette Add
action
[HttpPost]
public ActionResult Add(PersonSheets sendInfo) {
bool success = _addSomethingInList.AddNewSomething( sendInfo );
return this.Json( new {
msg = success
});
}
Mais sendInfo
comme le paramètre de méthode devient nul.
Le modèle:
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;
}
}
Comment pourrais-je faire une méthode d'action lorsque les données ont été envoyées avec POST?
Je ne sais pas comment m'en servir. De plus, il est possible de renvoyer la réponse (à ajax) via JSON?
jquery
ajax
asp.net-mvc
json
Œil de vipère
la source
la source
Réponses:
Créer un modèle
Contrôleurs comme ci-dessous
Javascript
la source
et en action
vous pouvez lier votre tableau comme ça
j'espère que cela peut vous aider.
la source
Utilisez
JSON.stringify(<data>)
.Changez votre code:
data: sendInfo
endata: JSON.stringify(sendInfo)
. J'espère que cela peut vous aider.la source
Pour publier JSON, vous devrez le stringifier.
JSON.stringify
et définissez l'processData
option sur false.la source
Votre PersonSheets a une propriété
int Id
,Id
n'est pas dans la publication, donc la liaison de modèle échoue. Rendre Id nullable (int?) Ou envoyer au moins Id = 0 avec le POst.la source
Vous n'avez pas besoin d'appeler
$.toJSON
et d'ajoutertraditional = true
ferait.
la source
Add(object[] sendInfo)
sera nul!