基本上这是一个简单的添加,修改,删除网页我在MVC5中做,EF6使用存储库模式(暂时没有工作单元)和DI与IoC(Autofac)。
这是我使用EF 6的域类:
public partial class Turnos
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public Turnos()
{
Alumnos = new HashSet<Alumnos>();
}
public int Id { get; set; }
[Required]
[StringLength(50)]
public string Descripcion { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<Alumnos> Alumnos { get; set; }
}
来自Id
的{{1}}已被另一个表(1到n关系)使用
Turnos
这些是我的模特:
public partial class Alumnos
{
public int Id { get; set; }
[Required]
[StringLength(50)]
public string Nombre { get; set; }
[Required]
[StringLength(50)]
public string Apellido { get; set; }
[Required]
[StringLength(50)]
public string Legajo { get; set; }
public int Dni { get; set; }
public int Carrera { get; set; }
public int Turno { get; set; }
public virtual Carreras Carreras { get; set; }
public virtual Turnos Turnos { get; set; }
}
在我的视图中public class AlumnoModel
{
#region Fields
public string Nombre { get; set; }
public string Apellido { get; set; }
public string Legajo { get; set; }
public int Dni { get; set; }
public int Carrera { get; set; }
public int Turno { get; set; }
#endregion
}
public class TurnoModel
{
public int Id { get; set; }
public string Descripcion { get; set; }
}
是使用Razor填充下拉列表的部分视图:
Turnos
现在我的问题是:
插入时将我唯一的 @{
foreach (var item in Model)
{
<option id="@item.Id">@item.Descripcion</option>
}
}
发送到前面是否安全?如果不
发送此人所选元素的Id
的最佳方式是什么?比较字符串当然是不可能的。
如果在我插入Id
时发送Id
是安全的,我如何使用开发者控制台保护自己改变Alumno
s的顺序?
答案 0 :(得分:0)
作为一般保护准则,您应始终尽可能多地验证来自用户的任何数据。可以把它想象成会被数字Antrax或其它东西污染。所以是的,验证它,但不要避免将ID发送到前面。
另外,如果您担心更改订单,那么我必须相信Turnos的订单很重要。如果是这样,那么ID不应该是提供订单的那个,它的工作就是提供IDentification所以:如何用另一个字段标记它以获得订单?也许是Turno的开始时间?