Ich habe diese Form:Ajax Beitrag: ASP.NET MVC Aktion empfängt leeres Objekt
@model CupCakeUI.Models.CupCakeEditViewModel
@using (Html.BeginForm(null, null, FormMethod.Post, new { id = "createFrm" }))
{
<div class="form-group">
<div class="editor-label">
@Html.LabelFor(model => model.Name)
</div>
<div class="editor-field">
<input type="text" id="Name" name="Name" value="@Model.Name" />
</div>
<div class="editor-label">
@Html.LabelFor(model => model)
</div>
<div class="editor-field">
<input type="text" id="Price" name="Price" value="@Model.Price" />
</div>
<div class="col-md-offset-2 col-md-10">
<input type="button" id="btnCreate" value="Create" class="btn btn-default" />
</div>
</div>
}
ich Ajax Post zu verwenden, ich versuche, Daten an die Aktion Methode zu senden, aber es ist immer leeres Objekt zu empfangen. Ich habe das mehrmals in der Vergangenheit getan, und jetzt habe ich versucht, verschiedene Arten, die nicht funktionieren, ist der Code:
$(document).ready(function() {
$("#btnCreate").click(function() {
var name = $("#Name").val();
var price = $("#Price").val();
var cupCakeEditModel = { "CupCakeId": 0, "Name": name, "Price": price };
var json = JSON.stringify(cupCakeEditModel);
$.ajax({
type: 'POST',
url: "/CupCake/Create",
data: JSON.stringify(cupCakeEditModel),
contentType: 'application/json',
success: function() {
alert("succes");
},
error: function() {
alert("error");
}
});
})
})
Sein dies in der Konsole zeigt bei der Anmeldung:
Dies ist die Aktion Methode und Klasse verwendet:
[HttpPost]
public JsonResult Create (CupCakeUI.Models.CupCakeEditViewModel cupCakeEditModel)
{
var cupCake =
CupCakeData.Save(cupCakeEditModel);
return Json("cupCake",
JsonRequestBehavior.AllowGet);
}
Dies ist die Klasse:
public class CupCakeEditViewModel
{
public int CupCakeId;
[Display(Name = "CupCake Name")]
public string Name;
public string Price;
}
Ich habe auch dieses, aber nicht funktioniert:
$("#btnCreate").click(function() {
var cupCakeEditModel =
$("#createFrm").serialize();
$.ajax({
url: "/CupCake/Create",
type: "POST",
data: cupCakeEditModel,
success: function (response) {
alert("Success");
},
error: function (response) {
}
});
})
Und einige Antworten, die ich auf dem Forum zu finden, aber es scheint seltsam etwas!
Zeigen Sie Ihr Modell. (und nicht verwandt, aber Sie sollten '@ Html.TextBoxFor (m => m.Name)' etc) anstatt Sie HTML manuell zu erstellen) –
Ja @StephenMuecke, ich benutzte dies, aber ich habe alles verändert, um zu machen es funktioniert, deshalb habe ich alles verändert. – Coding
Ich habe das Klassenmodell im Code-Snippet mit der Aktionsmethode – Coding