I am working ASP.NET MVC-5 app. I got form in Razor partial View and it require multiple models so i use ViewModel; putting all classes (models) reference in that as following
public class QualificationViewModel
{
public Qualification _Qualification;
//public Subject _Subject;
//public FeeScheme _FeeScheme;
}
now for time-being i am using only qualification model just to test my code but i am failing to send data from view to controller method. I am getting null value in debug in controller method
[HttpGet]
public ActionResult CreateNewQualification()
{
return PartialView("PartialQualification_Create");
}
[HttpPost]
public ActionResult CreateNewQualification(QualificationViewModel newQualificationData)
{
try
{
if (ModelState.IsValid)
{
//code here...
}
}
catch (DataException ex)
{
ModelState.AddModelError("", "Unable To Create New Qualification!" + ex);
}
return RedirectToAction("QualificationHome");
}
I am using jQuery Ajax method to post the data, with similar way i have succeeded of sending data for single model class....
function submit_createNewQualification()
{
alert(JSON.stringify($("#NewQualificationForm").serializeObject()));
$.ajax({
type: "Post",
url: "/Qualification/CreateNewQualification",
dataType: "json",
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ newQualificationData: $("#NewQualificationForm").serializeObject() }),
success: function (data) {
if (data == true) {
window.location = "/Qualification/QualificationHome";
}
},
error: function (jqXHR, textStatus, errorThrown) {
}
});
}
and i have following form in view...
@model DatabaseLayer.ViewModels.QualificationViewModel
@using (Html.BeginForm("CreateNewQualification", "Qualification", FormMethod.Post, new { id = "NewQualificationForm" }))
{
@Html.AntiForgeryToken()
<div class="form-group">
@Html.LabelFor(model => model._Qualification.QualificationTitle, new { @class = "control-label col-md-3" })
<div class="col-md-6">
@Html.EditorFor(model => model._Qualification.QualificationTitle)
@Html.ValidationMessageFor(model => model._Qualification.QualificationTitle)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model._Qualification.Active, new { @class = "control-label col-md-3" })
<div class="col-md-6 custom-checkBox-block-1">
@Html.EditorFor(model => model._Qualification.Active)
@Html.ValidationMessageFor(model => model._Qualification.Active)
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create Qualification" onclick="submit_createNewQualification()" class="btn btn-default" />
</div>
</div>
}
many thanks...