首页 新闻 赞助 找找看

关于mvc模式中 查询的问题

0
悬赏园豆:10 [已解决问题] 解决于 2013-06-22 09:48

在mvc模式中,controller层怎样将查询的结果(一张表),返回到另一个视图层。

具体情况是这样的:如果不返回另一个视图层的话,本视图层需要加IEnumerable.例如:(@model IEnumerable<MVCTEST.Models.Web客户订单>)但是在这个呈现查询结果的这个界面中有两个查询条件,这两个查询条件需要先绑定数据,绑定数据的处理方法是用DropDownListFor绑定。做法如下:

 1 视图层:(view)
 2 
 3 @model WebStuChooseCourse.Models.course
 4 
 5 <td>学院:</td>
 6 <td>@Html.DropDownListFor(m =>m.major.SchoolID, ViewData["dtXueYuan"] as IEnumerable<SelectListItem>)</td>
 7 
 8 控制层:(controller)
 9 
10 #region 绑定下拉框
11             var dtXueYuan = from a in ef.school select a;
12 
13 List<SelectListItem> itemXueYuan = new List<SelectListItem>();
14             foreach (school item in dtXueYuan)
15             {
16                 itemXueYuan.Add(new SelectListItem { Text = item.SchoolName, Value = item.SchoolID.ToString() });
17             }
18 
19 ViewData["dtXueYuan"] = itemXueYuan;

 

这个时候,如果加了:IEnumerable 也就是第三行代码变成(@model IEnumerable<MVCTEST.Models.Web客户订单>)

这时这个地方就会出错第六行代码这个地方(m =>m.major.SchoolID, ViewData["dtXueYuan"] as IEnumerable<SelectListItem>)

所以我想把它弄成两个界面,查询的条件放一个界面,查询的结果放另一个界面。在controller层中根据查询条件我的处理时这样的

   var v = (from a in ef.course join b in ef.major on a.MajorID equals b.MajorID join c in ef.school on b.SchoolID equals c.SchoolID where c.SchoolID == schoolID select a).ToList<course>();//course,major,school是数据库中的三个表

这个v的结果该怎么返回到另一个视图层显示出来。

问题补充:

或者可以定义一个全局变量保存查询的结果,然后通过另一个ActionResult中的return返回到新的视图层?

wj704的主页 wj704 | 初学一级 | 园豆:170
提问于:2013-06-21 11:59
< >
分享
最佳答案
0

return View(model);model即使实体,有何不可?

其他思路:将页面分为上下2个div(查询一个,数据展示一个),然后查询后,请求分部视图(数据展示),然后用$("#divContent").html(分部视图),这样的方式,还实现了Ajax版本的查询。

收获园豆:10
幻天芒 | 高人七级 |园豆:37175 | 2013-06-21 13:07

谢谢你的回复!我现在的解决办法是将页面分成了两个(查询一个,数据展示一个),查询的条件是这样获得:

1  <div style="margin-top:10px;margin-left:10px;">
2                 院系:@Html.DropDownList("dtXueYuan", ViewData["dtXueYuan"] as IEnumerable<SelectListItem>, "---选择院系---", new { id = "dtXueYuan" }) 
3                 <font style="margin-left:20px">专业:</font>@Html.DropDownList("dtZhuanYe", ViewData["dtZhuanYe"] as IEnumerable<SelectListItem>, "---选择专业---", new { id = "dtZhuanYe" })
4                 <input type="button" value="查询" id="btnSelectCourse" onclick=" getCourse()" style="margin-left:20px"/> </div>

根据查询条件,返回到controller层的处理是:

<script type="text/javascript">
            function getCourse() {
                $.getJSON("/Stu/ChooseCourse?SchoolID=" + $("#dtXueYuan").val() + "&MajorID=" + $("#dtZhuanYe").val(), function (data) {
                    $("#dtCourse").empty();
                    $.each(data, function (i) {
                        $("#dtCourse").append("<tr>" +....."</tr>")
                        });
                    });
   }
wj704 | 园豆:170 (初学一级) | 2013-06-22 09:47

@wj704: 嗯,性质是一眼的。只不过你是将数据扔到客户端,然后客户端组合的。这样的形式,服务器只需要提供数据,不需要生成页面,呵呵~

幻天芒 | 园豆:37175 (高人七级) | 2013-06-22 10:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册