ASP.NET MVC 4:如何创建一个“;“好”;模型

本文关键字:模型 一个 创建 MVC NET 何创建 ASP | 更新日期: 2023-09-27 18:25:11

我正在使用ASP.net MVC 4构建一个网站。用户将使用此网站来处理他们的会议。

使用下面的模型,如果我用实体框架创建一个控制器,Visual Studio会生成一个CRUD,其中每个属性都是可编辑的(除了关键字MeetingId):BeginEndMessageIsSentCustomerIdUserId

问题:

  • 哪里可以禁止用户修改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; }
}

ASP.NET MVC 4:如何创建一个“;“好”;模型

您的问题不容易回答,因为有很多方法可以做到这一点。

模型是存储中数据的表示,所以模型不负责您的业务规则。这就是为什么您应该只使用模型来处理数据,但可以通过任何方式将验证添加到模型中。

在哪里可以禁止用户修改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()