如何在ASP.NET MVC中向ViewModel显示和重新绑定数据(而不是用于编辑)

时间:2011-03-07 03:26:08

标签: asp.net-mvc

我正在以下列一般方式使用自定义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。

我希望(期待)这里有一个简单的解决方案吗?

非常感谢任何帮助。

干杯,

2 个答案:

答案 0 :(得分:1)

尝试添加隐藏字段:

Html.HiddenFor(m => m.Data)

如果您只使用<%: Model.Data %>将值写入页面,则在提交表单时不会包含该值。隐藏字段将随表单一起提交,但显然不会对用户可见。

答案 1 :(得分:0)

如果您尝试使用Html.LabelFor(x =&gt; x.Data)

,该怎么办?

更新:将Lambda表达式从模型更改为x。