Web アプリケーションに MVC 3 (RAZOR) を使用しています。
従業員レコード (名、姓、生年月日など) を処理する単純な「編集」ビューがありますが、一部のデータは機密で暗号化されています。機密データは暗号化され、base 64 文字列に変換されます。機密データは編集ビューでは編集できませんが、従業員レコードの他のフィールドを編集する必要がある場合にポストバックで失われないように、隠しフィールドに渡されて「保持」されます。
このデータはベース 64 であるため、非表示のフィールドにはレンダリングされないと思います。おそらく、MVC 3 のセキュリティの問題です。私のモデルでは、このプロパティが Required としてマークされていることにも言及する必要があります。そのため、ポストバックするには再入力する必要があります。
隠しフィールドで使用してもよいことを MVC に伝えるために、このプロパティに付ける必要がある特別な属性はありますか? 他のアイデアはありますか?
RAZOR では、隠しフィールドの宣言は次のようになります。
@Html.HiddenFor(model => model.SomeBase64String)
HTML では、次のようにレンダリングされます。
<input style="margin-right: 5px;" id="SomeBase64String" name="SomeBase64String" value="" type="hidden" data-val="true" data-val-required="SomeBase64String is required.">
Base 64 文字列の例は次のとおりです。
OW0iSdFXUqaUT82qjqaG5w==
編集 (GET) コントローラー アクション内には、次のものがあります。
public ActionResult Edit(int id)
{
Employee employee;
if (id == 0)
{
employee = Employee.CreateNew();
}
else
{
employee = _employeeDatabaseAccess.GetEmployeeById(id);
//employee.SomeBase64String is already set. it's stored in the db...
}
return View(employee);
}