【问题标题】:Viewing Details from View Model从视图模型查看详细信息
【发布时间】:2025-12-25 03:35:11
【问题描述】:

我正在尝试弄清楚如何使用 ViewModel 来查看视图中的详细信息。

我设置了一个视图模型,但似乎无法在我的视图中使用它。

在我的控制器中,我有一个 Details 方法,我想用它来显示 ViewModel 中的所有细节。

到目前为止,我将用户名作为字符串传递,然后创建 ViewModel 的新实例,然后我尝试用数据填充 ViewModel,但不确定我需要如何执行此操作。我根据传入的 id 分配用户名 -

public ViewResult Details(string id)
        {

            var viewModel = new RegisterViewModel();
            viewModel.UserName = id;
            return View(viewModel);
        }

然后将 viewModel 发送回视图,但是如何将其他相关数据获取到 viewModel 中??

【问题讨论】:

  • 你能澄清你的问题吗? 获取其他相关数据是什么意思?你的意思是从视图内部?
  • 我的意思是模型。视图模型包含 user 和 userdetails 模型。当我单击“详细信息”链接时,我想检索该特定用户的所有数据,但我不确定如何执行此操作。我的意思是与传入的用户名有关。谢谢

标签: asp.net-mvc ef-code-first


【解决方案1】:

您需要做的是查询您的数据库并将相关信息拉入您的视图模型,然后再将其传递回您的视图,即

public ViewResult Details(string id)
{
    var entity = // pull record from DB by id
    return View(new RegisterViewModel()
    {
        UserName = id,
        AnotherProperty = entity.AnotherProperty
        ...
    });
}

如果您将视图模型映射到很多地方的模型,您可能要考虑使用AutoMapper,它会简化您的代码。

【讨论】:

  • 谢谢 - 那么实体会是一个单独的模型吗?我需要为我的 ViewModel 中的每个模型声明一个实体吗?
  • @MartinMcMahon 正如你已经标记了你的问题 EF 我假设你有一个 EF 模型?即您已经从您的数据库中生成了一个 EDMX 文件。 “entity”指的是您的实际 EF 实体(从数据库中提取的记录)。