我有一个场景,我需要从发布到操作的信息中更新对象。只要信息在页面中,它就可以正常工作。但是,如果我不想让模型状态抱怨,它要求我将信息放入隐藏字段中。
例如,假设我使用下面的类作为模型:
public class Client
{
[Required]
public string Name { get; set; }
public string Email { get; set; }
public int Id { get; set; }
}
如果我不希望用户编辑名称,我需要将其包含在隐藏字段中,以便它绑定到模型并通过验证。
我遇到的问题是,如果与更敏感的信息一起使用,显然是不安全的。所以我尝试了这个:
public virtual ActionResult Save(Client model, int clientId)
{
var client = datasource.LoadEntity(adapter, clientId); // clientId is passed as a querystring to the action
if (!TryUpdateModel(client))
return new RedirectResult('The edit page URL');
}
问题是模型状态仍然抱怨“名称”值不可用,即使它是从数据库加载到客户端对象的。
显然我做错了什么,但我不知道是什么。