-1

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

对于下面的模型,如果我使用 Entity Framework 创建一个控制器,Visual Studio 会生成一个 CRUD,其中每个属性都是可编辑的(除了、键MeetingId):Begin、、、、和。EndMessageIsSentCustomerIdUserId

问题 :

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

1 回答 1

2

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

模型是存储中数据的表示,因此模型不对您的业务规则负责。这就是为什么您应该使用模型来操作数据,但您可以通过任何方式向模型添加验证。

我在哪里可以禁止用户修改 IsSent 属性?

首先,您应该在控制器中执行此操作,您可以检查用户角色并在表单上显示此属性或不取决于用户权限。其次,您可以将数据库模型与 ViewModel 分开,例如在您的示例中它将是 db 模型,然后您可以添加其他两个模型,例如 AdminMeetingModel、RestrictedUserMeetingModel。

我在哪里可以将 CustomerId(作为外键)链接到 Customer 表?所以用户可以从列表中选择正确的客户?我不确定您的 mvc 级别,但在 View @Html.DropDownFor(m=>m.CustomerId, LIST_OF_CUSTOMERS) 中很容易做到,然后在控制器中您应该下一步

public ActionResult Save(MeetingModel model)

MVC 将为您完成工作。

我在哪里可以将 UserId(作为外键)链接到当前创建会议的用户?

同样在这里,您可以在控制器中执行此操作,或者如果您决定使用自定义模型,则可以在构造函数中设置 UserID = SomeMethodWhichGetUserId()

于 2013-07-29T06:55:11.857 回答