我正在为我的 Web 应用程序使用 MVC 3 (RAZOR)。
我有一个简单的“编辑”视图来处理员工记录(例如名字、姓氏、出生日期等),但有些数据是敏感和加密的。敏感数据被加密并转换为 base 64 字符串。敏感数据在编辑视图中不可编辑,但被传递到隐藏字段以“保留它”,以便在需要编辑员工记录上的其他字段时不会在回发中丢失。
我认为因为这个数据是基于 64 位的,所以它不会在隐藏字段中呈现 - 也许这是 MVC 3 安全问题。我还应该提到,这个属性在我的模型上被标记为必需。所以它必须重新填充才能回发。
我需要在这个属性上添加一个特殊属性来告诉 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==
在 Edit (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);
}