如何在ASP中返回控制器中的多个选定值.净MVC

本文关键字:MVC ASP 返回 控制器 | 更新日期: 2023-09-27 18:12:01

我有一个控制器,我希望它只返回两个选定的行到视图。它看起来像这样:

public ActionResult Details(int sourceId, int targetId)
    {
        ConfigurationItem sourceItem = db.ConfigurationItemSet.Find(sourceId);
        ConfigurationItem targetItem = db.ConfigurationItemSet.Find(targetId);
        return View();
    }

我应该在"返回"中放什么?我想创建一个视图,其中仅包含由Id从表中选择的两行,并将其放在两个单独的网格中。

如何在ASP中返回控制器中的多个选定值.净MVC

您应该使用ViewModel(这是MVC中推荐的方式)。

ViewModel

public class DetailsViewModel
{
    public ConfigurationItem TargetItem { get; set; }
    public ConfigurationItem SourceItem { get; set; }
}

动作方法

public ActionResult Details(int sourceId, int targetId)
{
    var viewModel = new DetailsViewModel();
    viewModel.TargetItem  = db.ConfigurationItemSet.Find(targetId);
    viewModel.SourceItem = db.ConfigurationItemSet.Find(sourceId);
    return View(viewModel);
}

The View (Razor)

@model DetailsViewModel
// use Model.TargetItem  and Model.SourceItem 

你可以这样做

public ActionResult Details(int sourceId, int targetId)
{
    var sourceItem  = new list<ConfigurationItem>(); 
    ConfigurationItem sourceItem1 = db.ConfigurationItemSet.Find(sourceId);
    ConfigurationItem targetItem2 = db.ConfigurationItemSet.Find(targetId);
    sourceItem.add(sourceItem1);
    sourceItem.add(sourceItem2);
    return View(sourceItem.AsEnumerable());
}
<<p> 视图/strong>
@model IEnumerable<ConfigurationItem>

如果您不使用任何模型,然后尝试使用ViewBag.sourceItem从控制器传递数据到您的视图

ViewBag.sourceItem = db.ConfigurationItemSet.Find(sourceId);
ViewBag.targetItem = db.ConfigurationItemSet.Find(targetId);