美好的一天,
我想知道如何在创建中保存信息。
@model Request.Models.Chamados
@model Request.Models.InteracoesChamados
@{
ViewBag.Title = "Create";
}
如上面的两个表所示,当然不起作用。 请给我一个例子,因为它使我感到困惑。
注意:为了清楚起见,我填写表格并在点击保存时保存到2个表格。
环境: Windows 7的, Visual Studio 2010, C #, MVC3 + Razor实体框架
答案 0 :(得分:0)
这里似乎有一些事情,但对于初学者来说,每个视图只能声明一个模型。
您可以创建一个具有上述两种功能的ViewModel,例如
public class ChamodosViewModel{
public Chamados Chamados {get;set;}
public InteracoesChamados InteracoesChamados {get;set;}
}
然后在你的视图中
@model ChamodosViewModel
答案 1 :(得分:0)
请勿在您的视图中使用域模型。创建一个特定于您的视图的新 POCO 类。我们称之为 ViewModel 。
public class ChamodoVM
{
[Required]
public string ChamdoName { set;get;}
[Required]
public string InteracoName { set;get;}
//other properties here as needed
}
现在在GET
动作中创建此类的对象并传递给View
方法。
public ActionResult Create()
{
var vm=new ChamodoVM();
return View(vm);
}
使您的视图强烈输入ViewModel类。
@model ChamodoVM
@using(Html.BeginForm())
{
@Html.LabelFor(x=>x.ChamodoName)
@Html.TextBoxFor(x=>x.ChamodoName)
@Html.LabelFor(x=>x.InteracoName)
@Html.TextBoxFor(x=>x.InteracoName)
<input type="submit" />
}
当用户提交表单时,请从视图模型中读取值并将其分配给域模态的对象并保存。感谢MVC模型绑定。 :)
[HttpPost]
public ActionResult Create(ChamodoVM model)
{
if(ModelState.IsValid)
{
var domainModel=new Chamodo();
domainModel.Name=model.ChamodoName;
domainModel.Interaco=new Interaco();
domainModel.Interaco.Name=model.InteracoName;
yourRepositary.SaveClient(domainModel);
//If saved successfully, Redirect to another view (PRG pattern)
return RedirectToAction("ChamodoSaved");
}
return View(model);
}