在我的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会引发异常。
答案 0 :(得分:1)
而不是:
@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对象以填充视图是个好主意。
答案 1 :(得分:0)
我建议:
创建一个封装两个模型的新模型。在Models命名空间
中创建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的值