【发布时间】:2018-12-17 08:14:21
【问题描述】:
我正在开发一个基本应用程序。
这是主控制器:
public ActionResult Index()
{
var all = _context.mainz.ToList();
var vm = new mainViewModel()
{
main_lst = all
};
return View(vm);
}
public ActionResult Details()
{
var dtl = _context.mainz.ToList();
var vm = new mainViewModel()
{
main_lst = dtl
};
return View(vm);
}
public ActionResult count()
{
var ct = (from i in _context.mainz
where i.event_title != null
select i).ToList();
var vm = new countVm()
{
count = ct
};
return View(vm);
}
在这个控制器中,Index 和 Details 方法连接到两个不同的 razor 视图,如下所示:
这是索引的剃刀视图
@model testtt.ViewModel.mainViewModel
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<ul>
@foreach (var item in Model.main_lst)
{
<li>@item.event_title</li>
}
</ul>
这是详细信息的剃须刀视图
@model testtt.ViewModel.mainViewModel
@{
ViewBag.Title = "Details";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<ul>
@foreach (var item in Model.main_lst)
{
<li>@item.event_description</li>
}
</ul>
这是主视图模型
namespace testtt.ViewModel
{
public class mainViewModel
{
public List<main> main_lst { get; set; }
public mainViewModel()
{
main_lst = new List<main>();
}
}
}
现在在上面的主控制器中,如果您注意到我有第三种方法作为计数,它连接到部分视图,如下所示:
@model testtt.ViewModel.countVm
<p>count is @Model.count.Count()</p>
而countVm or (count view model)如下:
namespace testtt.ViewModel
{
public class countVm
{
public List<main> count { get; set; }
public countVm()
{
count = new List<main>();
}
}
}
到目前为止一切正常, 现在根据应用程序要求,我必须将此计数部分视图添加到所有其他剃须刀视图,如下所示:
@Html.Partial("count")
但是当我将它添加到索引或详细信息剃须刀视图中时,它会生成错误:
The model item passed into the dictionary is of type 'testtt.ViewModel.mainViewModel', but this dictionary requires a model item of type 'testtt.ViewModel.countVm'.
现在让我们说这个计数方法有一些相同的数据必须传递给所有其他剃须刀视图,但不能单独传递,因为单独传递将是耗时的,并且假设明天由于任何原因如果逻辑被更新那么我必须单独访问每一个方法,并且必须相应地更新它们,如果我们假设超过 100 个方法,这是不可能的。
简而言之,我正在寻找一种方法来从单个剃刀视图中的两个视图模型中检索数据?
【问题讨论】:
标签: c# razor model-view-controller