问:当用户单击submit时,将数据插入到正确的表中的最佳策略是什么?我是否应该在httppost中实例化3个视图模型,并使用Myform属性填充我的3个视图模型1.mvr,2.MvrMedation 3.AdminRoute,然后保存每个视图模型的记录?
假设某人转到一个表单,该表单包含来自下面所有3个视图模型的数据
1. MVR class,
2. MvrMedication
3. AdminRoute所以我的视图模型看起来像
public class MyForm
{
public virtual Mvr Mvr{get;set;}
public virtual MvrMedication MvrMedication{get;set;}
public virtual AdminRoute AdminRoute{get;set;}
}然后在我所有属性的视图编辑器中。当用户单击submit时,将数据插入到正确的表中的最佳策略是什么?
下面是一些代码,仅供参考
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
//Please use: http://blogs.msdn.com/b/efdesign/archive/2010/06/01/conventions-for-code-first.aspx
namespace MVR.Models.Tables
{
public class Mvr
{
[Key]
public virtual int MvrId { get; set; }
public virtual ICollection<MvrMedication> MvrMedicationId { get; set; }
public virtual DateTime DateOfReport { get; set; }
public virtual DateTime DateOfVariance { get; set; }
public virtual String IndividualFirstHospitalNumber { get; set; }
public virtual String MallUnit { get; set; }
public virtual Boolean PhysicianNotified { get; set; }
public virtual DateTime PhysicianDateNotified { get; set; }
public virtual Boolean PharmacistNotified { get; set; }
public virtual DateTime PharmacistDateNotified { get; set; }
public virtual DateTime PharmacistDateOfNotification { get; set; }
public virtual Boolean InitialSignature { get; set; }
public virtual String VarianceDescription { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
namespace MVR.Models.Tables
{
public class AdminRoute
{
[Key]
public virtual int AdminRouteId { get; set; }
public virtual MvrMedication MvrMedicationId { get; set; }
public virtual string RouteName { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
namespace MVR.Models.Tables
{
public class MvrMedication
{
[Key]
public virtual int MvrMedicationId{ get; set; }
public virtual ICollection<AdminRoute> AdminRouteId { get; set; }
public virtual string MvrMedicationName { get; set; }
}
}发布于 2011-10-14 10:19:31
您的视图模型看起来很好,但我建议您为Mvr、MvrMedicine和AdminRoute类创建视图模型,以使其更加用户友好。通常,您不应该在视图中看到Id。
在视图端,只需为表单上的输入使用@Html.EditorFor并将其提交给控制器中的HttpPost方法
@model MvcProject.Models.MyForm
@using (Html.BeginForm()) {
<fieldset>
<legend>Mvr</legend>
@Html.EditorFor(m => m.Mvr)
</fieldset>
<fieldset>
<legend>MvrMedication</legend>
@Html.EditorFor(m => m.MvrMedication)
</fieldset>
<fieldset>
<legend>AdminRoute</legend>
@Html.EditorFor(m => m.AdminRoute)
</fieldset>
<p>
<input type="submit" value="Save" />
</p>
}默认@Html.EditorFor()将为模型中的每个属性生成默认输入。您可以为每个视图模型创建自己的自定义编辑器模板,也可以只定义表单中的每个输入,但编辑器模板更简洁且可重用。
这是一个很好的editor templates教程。它是针对MVC2的,但概念是相同的。
https://stackoverflow.com/questions/7761109
复制相似问题