请问ASP.NET MVC3.0中同一View如何返回多个Model或数据集,除了下面这篇文章中介绍了的方法,还有其他方法吗,还有就是如果页面中想要调用控制器中的方法一般是怎么做的,只能用ajax吗?请高手指点:
http://www.cnblogs.com/gsyifan/archive/2009/10/23/1588825.html
针对你的View要使用的Models组合出一个新的Model。
在客户端浏览器中运行的话,可以使用VB Script或Java Script调用Controller上的方法,或者使用超链接的形式。
我也认为Galactica 的做法是一个不错的做法,我最近也遇见过..
例如
class UserInfoModel
class MessageInfoModel
则我们可以使用 UserMessageModel来对UserInfoModel 和 MessageInfoModel进行第二次的封装
class UserMessageModel
{
public UserInfoModel //自己进行一下错误处理
{
get;
set;
}
public MessageInfoModel //自己进行一下错误处理
{
get;
set;
}
}
这样是可以达到效果的!再到网上找找看,如果有更好的办法贴出来分享一下..
2、用ViewVag 第二种方法很不错哦 这种方法在哪里有啊?
我有这样做过,也是可以的。
在控制器里定义一个Dictionary 泛型类,再把要用到的不同模型加进去,额,直接贴代码吧。
控制器:
public ActionResult Index()
{
IDictionary<string, object> test = new Dictionary<string, object>();
test.Add("StudentList", new List<StudentInfo>());
return View(test);
}
视图:
@model IDictionary<string, object>
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<title>我的个人主页</title>
</head>
<body>
<ul style="list-style: none; margin-left: 10px;">
@foreach (var m in (IList<EnglishDiary.Models.StudentInfo>)Model["StudentList"])
{
<li>@m.StuID</li>
<li>@m.StuName</li>
}
</ul>
</body>
</html>
嗯,这样就可以了。
@KuBiCoder: 这个方法不好吗? 为什么有人点反对了?你现在用的是什么方法?我现在想要输出2个list