仅编辑ASP.Net MVC中的部分模型

时间:2012-05-07 09:17:59

标签: asp.net-mvc razor

我对MVC很陌生,偶然发现了一个问题。我已经google了很多但找不到解决方案。

我正在使用ASP.Net Membership和角色。

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

  • 名称
  • Art no
  • 分类

如何实现这个不同的角色cab只允许编辑对象的部分? (例如,假设一个角色不能改变产品的类别。)

是否可以为同一个模型或同一个对象的不同模型使用不同的视图?

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

1 个答案:

答案 0 :(得分:3)

ViewModel听起来像是可以做到的。对于除了最微不足道的场景之外的所有场景,当您紧密耦合模型和视图时,您将遇到问题。

如果之前没有使用它们,则ViewModel只是您要渲染的特定视图的类(模型)。您可以在ViewModel上自定义所需的属性和验证,然后将其绑定到Model,这样结构就更灵活,更易于使用。

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

有详细的介绍

修改

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