Pau*_*els 7 c# linq asp.net-mvc asp.net-mvc-viewmodel
我目前在我的MVC项目的HomeController中有以下代码:
public class HomeController : Controller
{
public ActionResult Index()
{
MyDataContext dc = new MyDataContext();
IQueryable<Table1Data> j =
from n in dc.Table1
select n;
return View(j);
}
Run Code Online (Sandbox Code Playgroud)
这样可行,但现在我想将第二个表传递到同一个视图.所以我在想我应该能做这样的事情:
public class HomeController : Controller
{
public ActionResult Index()
{
MyDataContext dc = new MyDataContext();
IQueryable<Table1Data> j =
from n in dc.Table1
select n;
IQueryable<Table2Data> l =
from k in dc.Table2
select k;
return View(j, l);
}
Run Code Online (Sandbox Code Playgroud)
有没有办法有观点接受两个模型是这样,或者,一个方法来合并两个结果集(这两个表没有以任何方式联系?
Pat*_*her 16
是的,但不是那样的.执行您希望执行的操作的方法是创建自定义ViewModel类.此类(MyPageViewModel)将具有两个(或更多)属性,每个对象一个.在您的视图中,您可以使用Model.Table1Data和访问它们Model.Table2Data.
一个自定义的ViewModel类是很简单的:
public class MyPageViewModel
{
public IQueryable<Table1Data> Table1Data { get; set; }
public IQueryable<Table2Data> Table2Data { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
您需要对此自定义ViewModel类进行强类型查看.
<%@ Page Title="MyPage" MasterPageFile="~/Application/Master Pages/Site.Master"
Inherits="System.Web.Mvc.ViewPage(Of MyAppNamespace.MyPageViewModel)" %>
Run Code Online (Sandbox Code Playgroud)
不要试图自己输入; 更容易创建新视图并检查"强类型"视图,并指定New Custom Viewmodel类.
然后你的动作控制器方法将是:
public class HomeController : Controller
{
public ActionResult Index()
{
MyDataContext dc = new MyDataContext();
MyPageViewModel vm = new MyPageViewModel();
vm.Table1Data = from n in dc.Table1
select n;
vm.Table1Data = from k in dc.Table2
select k;
return View(vm);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23640 次 |
| 最近记录: |