我有问题,我有下一个控制器
namespace RolesMVC3.Areas.Administrador.Controllers
{
[Authorize(Roles = "Adminr")]
public class HomeController : Controller
{
private BASEDATOSCJ_2Entities db = new BASEDATOSCJ_2Entities();
public ActionResult Index()
{
string username = User.Identity.Name;
MembershipUser user = Membership.GetUser(username);
Guid key = (Guid)Membership.GetUser().ProviderUserKey;
var Universities = (from u in db.UNIVERSITy
join s in db.CAMPUS_UNIVERSITy on u.IdUniversity equals s.IdUniversity
join c in db.CIUDAD_CAMPUS on s.IdCiudadSede equals c.IdCiudadSede
join co in db.OFFICE on s.Idoffice equals co.Idoffice
join uxc in db.USERxOFFICE on co.Idoffice equals uxc.Idoffice
where uxc.UserId == key
select new { u.Name, namecity = c.Nombre, s.Idoffice}).ToList();
return View(Universities);
}
使用此控制器,我只想发送到View u.Name和s.Idoffice。我怎样做? (实际上不知道这个controllet是否正常),我想发送属于不同表的字段。我想将查询作为列表发送并显示在View,ViewBag中随身携带吗?如何将这些数据传递给视图并使用foreach显示?。
我用剃须刀
答案 0 :(得分:3)
如果您更改以下行:
select new { u.Name, namecity = c.Nombre, s.Idoffice}
要
select new { Name = u.Name, Idoffice = s.Idoffice }
这只会将两个字段选为一个列表。在您的视图中,您可以执行以下操作:
@model List<dynamic>
@foreach(dynamic d in Model) {
<p>@d.Name</p>
<p>@d.Idoffice</p>
}
您可能希望定义 ViewModel 以包含您的数据。
public class MyViewModel {
string Name {get;set;}
string Idoffice {get;set;}
}
现在您可以按如下方式更改select
声明:
select new MyViewModel { Name = u.Name, Idoffice = s.Idoffice }
并更新您的Razor
文件:
@model List<MyViewModel>
@foreach(MyViewModel d in Model) {
<p>@d.Name</p>
<p>@d.Idoffice</p>
}
答案 1 :(得分:1)
我会使用视图模型。我已经学会了不将我的域对象暴露给视图,而是将我的域对象映射到视图模型并将此视图模型返回到视图。
将数据访问逻辑与视图逻辑分开。您可以将整个语句放入存储库类,然后只需从控制器调用此方法。
以下是部分视图模型,如果需要显示更多数据,可能还有更多属性:
public class UniversityViewModel
{
IEnumerable<University> Universities { get; set; }
}
大学课程:
public class University
{
public string Name { get; set; }
public string Idoffice { get; set; }
}
在我的控制器的动作方法中,它看起来像这样:
public ActionResult Index(int id)
{
UniversityViewModel viewModel = new UniversityViewModel
{
Universities = universityRepository.GetAll()
};
return View(viewModel);
}
在我看来,我会有以下内容:
<table>
@foreach(University university in Model.Universities)
{
<tr>
<td>Name:</td>
<td>university.Name</td>
</tr>
}
</table>
这只是视图中数据的基本显示,您可以使用第三方组件显示具有某些功能的数据。