ASP.NET MVC 4:如何创建一个“;“好”;模型
本文关键字:模型 一个 创建 MVC NET 何创建 ASP | 更新日期: 2023-09-27 18:25:11
我正在使用ASP.net MVC 4构建一个网站。用户将使用此网站来处理他们的会议。
使用下面的模型,如果我用实体框架创建一个控制器,Visual Studio会生成一个CRUD,其中每个属性都是可编辑的(除了关键字MeetingId
):Begin
、End
、Message
、IsSent
、CustomerId
和UserId
。
问题:
- 哪里可以禁止用户修改
IsSent
属性 - 在哪里可以将
CustomerId
(作为外键)链接到Customer
表?所以用户可以从列表中选择合适的客户 - 在哪里可以将
UserId
(作为外键)链接到当前创建meeting
的用户
感谢
[Table("Meeting")]
public class MeetingModel
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int MeetingId { get; set; }
[Required]
[DataType(DataType.DateTime)]
public DateTime Begin { get; set; }
[Required]
[DataType(DataType.DateTime)]
public DateTime End { get; set; }
[Required]
[DataType(DataType.Text)]
public string Message { get; set; }
public bool IsSent { get; set; }
public int CustomerId { get; set; }
public int UserId { get; set; }
}
您的问题不容易回答,因为有很多方法可以做到这一点。
模型是存储中数据的表示,所以模型不负责您的业务规则。这就是为什么您应该只使用模型来处理数据,但可以通过任何方式将验证添加到模型中。
在哪里可以禁止用户修改IsSent属性?
首先,您应该在控制器中这样做,在那里您可以检查用户角色并在表单上显示此属性。这取决于用户权限。其次,您可以将数据库模型与ViewModel分离,例如,在您的示例中,它将是数据库模型,然后您可以添加另外两个模型,如AdminMeetingModel、RestrictedUserMeetingModel。
在哪里可以将CustomerId(作为外键)链接到Customer表?所以用户可以从列表中选择合适的客户?我不确定你的mvc级别,但在View中很容易做到@Html.DropDownFor(m=>m.CustomerId,LIST_OF_CUSTOMERS)然后在控制器中,您应该进行下一次
public ActionResult Save(MeetingModel model)
MVC将为您完成任务。
在哪里可以将UserId(作为外键)当前链接到用户创建会议?
同样,您可以在控制器中执行此操作,或者如果您决定使用自定义模型,则可以在构造函数中设置UserID=SomeMethodWhichGetUserId()