加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – CheckBoxList多个选择:难度模型绑定

发布时间:2020-12-15 19:44:27 所属栏目:asp.Net 来源:网络整理
导读:我正在上课,如下 public class UserRoleModel{ public string Role { get; set; } public bool UserRole { get; set; }} 和public UserRoleModel [] UserRoles {get;组; } 我的控制器如下: public ActionResult CreateUser() { UserDetailsModel model = ne
我正在上课,如下
public class UserRoleModel
{
    public string Role { get; set; }
    public bool UserRole { get; set; }
}

和public UserRoleModel [] UserRoles {get;组; }

我的控制器如下:

public ActionResult CreateUser()
     {
         UserDetailsModel model = new UserDetailsModel();
         return View(model);
     }

     [HttpPost]
     public ActionResult CreateUser(UserDetailsModel model)
     {

         return View(model);
     }

在我看来我有

>@foreach (var item in Model.UserRoles)      
    { 

    name = "UserRoles"+ ".Value["+ i + "]"; 
    id= "UserRoles" + "_Value[" + i++ + "]";
    selected = item.UserRole ? "checked="checked"" : ""; 

        <p>
        <input type="checkbox" name="@name" id="@id" @selected value="true" /> 
        <label for="@id">@item.Role</label> 
        <input type="hidden" name="@name" value="false" /> 
        </p> 
  }

尽管我的看法中显示的值相应地显示,但是UserRoles没有模型绑定.我失踪了还是有更好更干净的方法?

解决方法

使用编辑器模板很好地实现了这些事情.他们也避免你在你的意见中写意大利面条代码.例:

模型:

public class UserDetailsModel
{
    public IEnumerable<UserRoleModel> Roles { get; set; }
}

public class UserRoleModel
{
    public string Role { get; set; }
    public bool UserRole { get; set; }
}

控制器:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View(new UserDetailsModel
        {
            // Fill with some dummy stuff
            Roles = Enumerable.Range(1,5).Select(x => new UserRoleModel
            {
                Role = "role " + x,UserRole = false
            })
        });
    }

    [HttpPost]
    public ActionResult Index(UserDetailsModel model)
    {
        return View(model);
    }
}

查看(?/ Views / Home / Index.cshtml):

@model AppName.Models.UserDetailsModel
@using (Html.BeginForm())
{ 
    @Html.EditorFor(x => x.Roles)
    <input type="submit" value="OK" />
}

编辑器模板(?/ Views / Home / EditorTemplates / UserRoleModel.cshtml):

@model AppName.Models.UserRoleModel
@Html.CheckBoxFor(x => x.UserRole)
@Html.LabelFor(x => x.Role,Model.Role)
@Html.HiddenFor(x => x.Role)

现在这就是我所说的干净的东西.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读