所以我有这个aps.net mvc项目,我在其中创建了一个服务层,模型视图,控制器和一个视图页面。但我无法将结果显示到视图页面。我通过在服务层中传递一个特定的linq语句来启动它,所以我应该能够返回它以显示在视图上。这就是我所拥有的:
服务
public IEnumerable<RoleUser> GetUsers(int sectionID)
{
var _role = DataConnection.GetRole<RoleUser>(9, r => new RoleUser
{
Name = RoleColumnMap.Name(r),
Email = RoleColumnMap.Email(r)
}, resultsPerPage: 20, pageNumber: 1);
return _role;
}
型号:
public partial class Role
{
public RoleView()
{
this.Users = new HashSet<RoleUser>();
}
public ICollection<RoleUser> Users { get; set; }
}
public class RoleUser
{
public string Name { get; set; }
public string Email { get; set; }
}
控制器:
public ActionResult RoleUser(RoleView rvw)
{
var rosterUser = new RosterService().GetUsers();
ViewBag.RosterUsers = rosterUser;
return View();
}
查看:
<div>
<span>@Model.Name</span>
</div>
我不确定我错过了什么或做错了什么,但任何提示都会很棒。我基本上想要从我正在测试的linq语句中返回结果,看看连接是否正确,并且在增强之前是否存在功能。感谢...
答案 0 :(得分:1)
好吧,如果我要删除你提供的代码,我会说我不确定这是如何编译的:
public partial class Role
{
public RoleView()
{
this.Users = new HashSet<RoleUser>();
}
public ICollection<RoleUser> Users { get; set; }
}
感觉应该是:
public partial class RoleView
然后我会说在你的观点的顶部你错过了这个:
@model NamespaceToClass.RoleView
然后我会说你不能发出这个:
@Model.Name
因为RoleUser
不是你的模特。您将需要遍历用户:
@foreach (RoleUser ru in Model.Users)
然后在该循环中你可以用这个构建一些HTML:
ru.Name
但我也会质疑你的控制器。现在它正在接收一个返回该模型的模型。这里缺少一些代码,但一般来说,在方法中:
public ActionResult RoleUser(RoleView rvw)
你实际上会获取数据,构建模型,然后返回:
var users = serviceLayer.GetUsers(...);
// now construct the RoleView model
var model = ...
return View(model);
根据我们的对话,您目前在控制器中有类似的内容:
public ActionResult View(int id)
{
// get the menu from the cache, by Id
ViewBag.SideBarMenu = SideMenuManager.GetRootMenu(id);
return View();
}
public ActionResult RoleUser(RoleView rvw)
{
var rosterUser = new RosterService().GetUsers();
ViewBag.RosterUsers = rosterUser;
return View();
}
但实际上需要看起来像这样:
public ActionResult View(int id)
{
// get the menu from the cache, by Id
ViewBag.SideBarMenu = SideMenuManager.GetRootMenu(id);
var rosterUser = new RosterService().GetUsers();
ViewBag.RosterUsers = rosterUser;
return View();
}
因为您正在点击此操作的侧边栏启动此页面,因为您在URL中传递了ID。 您甚至不需要其他操作。