Sha*_*ean 7 asp.net-mvc asp.net-mvc-3
我读了EditorTemplates自动加载,但是从asp.net的MVC 2和3,现在用剃刀,我仍然无法得到这个工作.
我的模型看起来像这样:
public class RoleViewModel
{
public int RoleId { get; set; }
public bool InRole { get; set; }
public string RoleName { get; set; }
}
public class UserViewModel
{
public User User { get; set; }
public IEnumerable<RoleViewModel> Roles { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的观点如下:
〜/查看/角色/ Edit.cshtml
@model Project.Web.ViewModel.UserViewModel
@using (Html.BeginForm()) {
@Html.EditorFor(model => model.Roles)
<!-- Other stuff here -->
}
Run Code Online (Sandbox Code Playgroud)
〜/查看/角色/ EditorTemplates/RoleViewModel.cshtml
@model Project.Web.ViewModel.RoleViewModel
@foreach (var i in Model)
{
<div>
@i.RoleName
@Html.HiddenFor(model => i.RoleId)
@Html.CheckBoxFor(model => i.InRole)
</div>
}
Run Code Online (Sandbox Code Playgroud)
如果我从内容转移EditorTemplate到实际的页面,那么它的工作原理,它显示的复选框等,但这个目前的设置,都显示了为角色的数量的计数.
我究竟做错了什么?
@model MvcApplication16.Controllers.RoleViewModel
<div>
@Model.RoleName
@Html.HiddenFor(m => m.RoleId)
@Html.CheckBoxFor(m => m.InRole)
</div>
Run Code Online (Sandbox Code Playgroud)
@model MvcApplication16.Controllers.UserViewModel
@using (Html.BeginForm()) {
@Html.EditorFor(m => m.Roles)
<!-- Other stuff here -->
}
Run Code Online (Sandbox Code Playgroud)
public class UserViewModel {
public User User { get; set; }
public IEnumerable<RoleViewModel> Roles { get; set; }
}
public class RoleViewModel {
public int RoleId { get; set; }
public bool InRole { get; set; }
public string RoleName { get; set; }
}
public class User {
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
public ActionResult Edit() {
return View(
new UserViewModel() {
User = new User() { Name = "Test" },
Roles = new List<RoleViewModel>() {
new RoleViewModel() {
RoleId = 1,
InRole = true,
RoleName = "Test Role" }}
});
}
Run Code Online (Sandbox Code Playgroud)
上面的代码工作得很好.与你的比较,看看你有没有看到任何问题:)
| 归档时间: |
|
| 查看次数: |
4541 次 |
| 最近记录: |