在我的MVC应用程序中,我有一个像下面的模型类
public class PROJECT
{
[Display(Name = "Project No.")]
public string PROJECT_NO { get; set; }
[Display(Name = "Title")]
[DataType(DataType.MultilineText)]
[Required]
public string TITLE { get; set; }
[Display(Name = "Description")]
[DataType(DataType.MultilineText)]
public string DESCRIPTION { get; set; }
[Display(Name = "Remarks")]
public string REMARKS { get; set; }
}
我有一个像这样的ViewModel
public class ProjectViewModel
{
public PROJECT Project { get; set; }
public bool IsSelected { get; set; }
public COMPANY Companies { get; set; }
public CLIENT Clients { get; set; }
}
ViewModel是我正在创建控制器和视图的一个。我也创建了索引,详细信息,删除并创建视图。索引,详细信息和删除视图只是效果很好,但创建控制器模型绑定似乎无法正常工作。作为控制器创建的输入的projectViewModel对象为null。如何将视图模型作为参数绑定到此对象?
// POST: /Project/Create
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(ProjectViewModel project)
{
if (ModelState.IsValid)
{
db.PROJECTs.Add(project.Project);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.CLIENT_ID = new SelectList(db.CLIENTs, "ID", "NAME", project.Project.CLIENT_ID);
ViewBag.COMPANY_ID = new SelectList(db.COMPANies, "ID", "NAME", project.Project.COMPANY_ID);
return View(project);
}
这是创建视图
@model IMCCBluePrints.Models.ProjectViewModel
@{
ViewBag.Title = "Create";
}
<h2>Create</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>PROJECT</h4>
<hr />
@Html.ValidationSummary(true)
<div class="form-group">
@Html.LabelFor(model => model.Project.PROJECT_NO, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Project.PROJECT_NO)
@Html.ValidationMessageFor(model => model.Project.PROJECT_NO)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Project.TITLE, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Project.TITLE)
@Html.ValidationMessageFor(model => model.Project.TITLE)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Project.DESCRIPTION, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Project.DESCRIPTION)
@Html.ValidationMessageFor(model => model.Project.DESCRIPTION)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Project.REMARKS, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Project.REMARKS)
@Html.ValidationMessageFor(model => model.Project.REMARKS)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Project.COMPANY_ID, "COMPANY_ID", new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("COMPANY_ID", String.Empty)
@Html.ValidationMessageFor(model => model.Project.COMPANY_ID)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Project.CLIENT_ID, "CLIENT_ID", new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("CLIENT_ID", String.Empty)
@Html.ValidationMessageFor(model => model.Project.CLIENT_ID)
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
在您的获取行动中实例化您的项目类,然后尝试:
...
ProjectViewModel.project = new PROJECT();
...
return View(ProjectViewModel);
当形式提交项目冲突与类型项目一样复杂时,只需将其重命名为模型,例如
public ActionResult Create(ProjectViewModel model)
尝试一下,它将起作用,我已经尝试了。