[英]post data to controller from view using viewModel classes -ASP.NET MVC5
我正在使用ASP.NET MVC-5应用程序。 我在Razor局部视图中得到了表单,它需要多个模型,所以我使用ViewModel; 将所有类(模型)引用如下所示
public class QualificationViewModel
{
public Qualification _Qualification;
//public Subject _Subject;
//public FeeScheme _FeeScheme;
}
现在暂时我只使用资格模型来测试我的代码,但我无法将数据从视图发送到控制器方法。 我在控制器方法的调试中得到null值
[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");
}
我使用jQuery Ajax方法发布数据,类似的方式我成功发送单个模型类的数据....
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) {
}
});
}
我有以下表格......
@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>
}
非常感谢...
试试这个
public class QualificationViewModel
{
public Qualification _Qualification {get; set;}
//public Subject _Subject;
//public FeeScheme _FeeScheme;
}
[HttpGet]
public ActionResult CreateNewQualification()
{
var Model = new QualificationViewModel();
return PartialView("PartialQualification_Create",model);
}
你不需要JSON字符串化你的模型,你只需要发送你的表单的序列化版本,默认的MVC模型绑定将处理其余的:
data: $("#NewQualificationForm").serialize()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.