アクションに投稿された情報からオブジェクトを更新する必要があるシナリオがあります。情報がページにある限り、これは正常に機能します。ただし、モデル状態に文句を言わせたくない場合は、隠しフィールドに情報を入れる必要があります。
例として、以下のクラスをモデルとして使用しているとしましょう。
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');
}
問題は、モデル状態が、データベースからクライアント オブジェクトにロードされたにもかかわらず、「名前」の値が利用できないことについてまだ不平を言うことです。
明らかに私は何か間違ったことをしていますが、何がわかりません。