我正在以下列一般方式使用自定义ViewModel:
public ActionResult Edit(int id)
{
// Attempt to fetch object from DB
var obj = Repository.GetObject(id);
// Populate Dto
var viewModel = new ObjectViewModel();
var adapter = new ObjectAdapter(obj, viewModel, da);
adapter.MapDto();
return View(viewModel);
}
public ActionResult Edit(int id, ObjectViewModel viewModel)
{
// Fetch object from DB
var obj = Repository.GetObject(id);
// Update object from DTO
var adapter = new ObjectAdapter(obj, viewModel, da);
adapter.MapObject();
// Save back to DB
Repository.SaveChanges();
// Return to the Index
return RedirectToAction("Index");
...
那么在我看来,我想显示一些数据,但不是为了编辑。目前我已经尝试过:
<%: Model.Data %>
我尝试过Html.Label()。他们都显示数据很好。
但问题是这个。在POST操作上,“&lt;%:Model.Data%&gt;”或标签不绑定回ViewModel。因此“MapObject()”将在POST操作上为“Model.Data”映射null。
我希望(期待)这里有一个简单的解决方案吗?
非常感谢任何帮助。
干杯,
添
答案 0 :(得分:1)
尝试添加隐藏字段:
Html.HiddenFor(m => m.Data)
如果您只使用<%: Model.Data %>
将值写入页面,则在提交表单时不会包含该值。隐藏字段将随表单一起提交,但显然不会对用户可见。
答案 1 :(得分:0)
如果您尝试使用Html.LabelFor(x =&gt; x.Data)
,该怎么办?更新:将Lambda表达式从模型更改为x。