在View ASP.NET中传递更多的多个查询
本文关键字:查询 View ASP NET | 更新日期: 2023-09-27 17:59:55
在我的Repository类中,我有两个查询,希望它只出现在一个视图中:
public ClassXXXX GetxxxoList(string Name)
{
return context.ClassXXXX.Where(v => v.Name == Name).Single();
}
Repository类中的第二个查询是:
public IEnumerable<ClassXXXX> List()
{
return context.ClassXXXX.ToList();
}
然后在我看来,我正在这样做:
@model IEnumerable<Namespace.Models.ClassXXXX>
@model Namespace.Models.ClassXXXX
分别返回我认为的两个查询。但ASP.NET在一个视图中两次使用@model时抛出异常。
而不是:
@model IEnumerable<Namespace.Models.ClassXXXX>
@model Namespace.Models.ClassXXXX
您可以创建一个ViewModel类,其中包含所有需要的数据:
public class YourContextViewModel
{
public List<Person> Person { get; set; }
public string UserName{get;set;}
...
}
最好创建一个ViewModel对象来填充视图。
我建议:
创建一个封装两个模型的新模型。在模型名称空间中创建模型ModelXXXX
public class ModelXXXX
{
public ModelXXXX(ClassXXXX singleXXXX, List<SingleXXXX> listXXXX)
{
SingleXXXX = singleXXXX;
ListXXXX = listXXXX;
}
public ClassXXXX SingleXXXX { get; set; };
public IList<ClassXXXX> ListXXXX { get; set; }
}
然后在控制器中,你会有这样的东西:
public virtual ActionResult Index()
{
[...]
string name = "name";
ModelXXXX model = new ModelXXXX(GetxxxoList(name), List());
return View("..Views/Index.cshtml", model)
}
最后,在你看来:
@model Namespace.Models.ModelXXXX
[...]
@Model.SingleXXXX
@Model.ListXXXX
第一个(@Model.SingleXXXX)的值为@Model Namespace.Models.ClassXXXX
第二个(@Model.SingleXXXX)的值为@Model IEnumerable