2

我对 MVC 很陌生,偶然发现了一个问题。我用谷歌搜索了很多,但找不到解决方案。

我正在使用带有角色的 ASP.Net Membership。

假设我有一个具有属性的产品模型:

  • 姓名
  • 艺术编号
  • 类别

我怎样才能实现这一点,所以只允许不同的角色 cab 编辑对象的一部分?(例如,假设一个角色不能更改产品的类别。)

同一个模型可以有不同的视图,或者同一个对象可以有不同的模型吗?

如果我遗漏了一些属性,当我保存它们时它们将具有 NULL 值。我尝试使用@HTML.HiddenFor(...),但随后对这些字段的验证失败。

4

1 回答 1

3

ViewModel 听起来可以解决问题。对于除了最琐碎的场景之外的所有场景,当您将模型和视图紧密耦合时,您都会遇到问题。

如果您以前没有使用过它们,ViewModel 只是您正在渲染的特定视图的一个类(模型)。您可以在 ViewModel 上自定义所需的属性和验证,然后将其绑定到 Model,因此该结构更加灵活且易于使用。

ViewModels http://kazimanzurrashid.com/posts/asp-dot-net-mvc-viewmodel-usage-and-pick-your-best-pattern有详细介绍

编辑

然后,您可以为每个角色拥有一个 ViewModel,但如果您只是希望保护某个属性不被某些角色更新,则应该有其他解决方案,例如将 html 输入设置为禁用,然后在服务器上测试该类别value 仍处于其原始状态(请注意,您应该始终执行这样的测试,因为 Post 请求可以更改)。

于 2012-05-07T09:35:52.997 回答