Asp.net mvc 3 MVC3Razor-如何使用隐藏字段来维护页面请求之间复选框的状态?

Asp.net mvc 3 MVC3Razor-如何使用隐藏字段来维护页面请求之间复选框的状态?,asp.net-mvc-3,razor,checkbox,hidden-field,Asp.net Mvc 3,Razor,Checkbox,Hidden Field,我使用隐藏字段来维护页面请求之间复选框的状态,除非它不起作用。因此,当我点击我的webgrid转到接下来的15条记录时,它会忘记选中了哪些复选框 索引视图 @model IEnumerable<UserManager.Models.vw_UserManager_Model> @{ ViewBag.Title = "User Manager Dashboard"; } @Html.ActionLink("Create New User", "CreateUser") @usin

我使用隐藏字段来维护页面请求之间复选框的状态,除非它不起作用。因此,当我点击我的webgrid转到接下来的15条记录时,它会忘记选中了哪些复选框

索引视图

@model IEnumerable<UserManager.Models.vw_UserManager_Model>
@{
    ViewBag.Title = "User Manager Dashboard";
}
@Html.ActionLink("Create New User", "CreateUser")
@using (@Html.BeginForm())
{
    <div class="webgrid-filter">
        @{Html.RenderAction("_WebGridFilter", "UserManager");}
    </div>

    <div id="webgrid-wrapper">
        @Html.Partial("~/Views/Partial/_WebGridUserManager.cshtml", Model)
    </div>
    <br />
}
<script type="text/javascript">
    $(document).ready(function () {

        // Disable checkboxs where a user is not active.
        $(".webgrid-wrapper input:not(:checked)").attr("disabled", "disabled");

        // Style tables.
        function jQueryUIStyling() {
            $('input:button, input:submit').button();

            $('.webgrid-wrapper').addClass('ui-grid ui-widget ui-widget-content ui-corner-all');
            $('.webgrid-title').addClass('ui-grid-header ui-widget-header ui-corner-top');
            jQueryTableStyling();
        } // end of jQueryUIStyling

        function jQueryTableStyling() {
            $('.webgrid').addClass('ui-grid-content ui-widget-content');
            $('.webgrid-header').addClass('ui-state-default');
            $('.webgrid-footer').addClass('ui-grid-footer ui-widget-header ui-corner-bottom ui-helper-clearfix');
        } // end of jQueryTableStyling
    });
</script>
<script type="text/javascript">

    function filterGrid() {
        var filters = getFilterVals();
        $.ajax({
            url: '@Url.Action("Index", "UserManager")',
            type: "POST",
            async: true,
            dataType: "html",
            data: "alfConnect=" + filters.alfConnect + "&" + "alfIntelligence=" + filters.alfIntelligence + "&" + "brad=" + filters.brad,
            success: function (data) {
                $('#webgrid-wrapper').empty().html(data);
                //                $('#webgrid-wrapper').html(data);
            }
        });
    }

    function getFilterVals() {
        filters = new Object();
        if ($('.webgrid-filter #chkFilterAlfIntell').is(':checked')) {
            filters.alfIntelligence = 1;
        }
        else {
            filters.alfIntelligence = 0;
        }

        if ($('.webgrid-filter #chkFilterAlfConn').is(':checked')) {
            filters.alfConnect = 1;
        }
        else {
            filters.alfConnect = 0;
        }

        if ($('.webgrid-filter #chkFilterBrad').is(':checked')) {
            filters.brad = 1;
        }
        else {
            filters.brad = 0;
        }
        return filters;

    }

    function logUserOff(url) {
        var answer = confirm('Are you sure you want to save this data?')
        if (answer) {
            //            alert(url + ": " + value);

            $.ajax({
                url: url,
                type: "POST"
                //                data: value
            }).done(function () {
                $(this).addClass("done");
            });


            return true;
        }
        else {
            return false;
        }
    };
</script>
@model IEnumerable
@{
ViewBag.Title=“用户管理器仪表板”;
}
@ActionLink(“创建新用户”、“创建用户”)
@使用(@Html.BeginForm())
{
@{Html.RenderAction(“_WebGridFilter”,“UserManager”);}
@Html.Partial(“~/Views/Partial/\u WebGridUserManager.cshtml”,Model)

} $(文档).ready(函数(){ //在用户未处于活动状态时禁用复选框。 $(“.webgrid包装器输入:未(:选中)”).attr(“已禁用”、“已禁用”); //样式表。 函数jQueryIstyling(){ $('input:button,input:submit').button(); $('.webgrid wrapper').addClass('ui-grid-ui小部件ui小部件内容ui-corner-all'); $('.webgrid title').addClass('ui-grid-header-ui小部件头ui-corner-top'); jQueryTableStyleing(); }//jQueryIstyling的结尾 函数jQueryTableStyleing(){ $('.webgrid').addClass('ui-grid-content-ui小部件内容'); $('.webgrid header').addClass('ui-state-default'); $('.webgrid-footer').addClass('ui-grid-footer ui小部件页眉ui角底ui帮助程序clearfix'); }//jQueryTableStyleing结束 }); 函数filterGrid(){ var filters=getFilterVals(); $.ajax({ url:'@url.Action(“索引”,“用户管理器”), 类型:“POST”, async:true, 数据类型:“html”, 数据:“alfConnect=“+filters.alfConnect+”&“+”alfIntelligence=“+filters.alfIntelligence+”&“+”brad=“+filters.brad, 成功:功能(数据){ $('#webgrid wrapper').empty().html(数据); //$('#webgrid wrapper').html(数据); } }); } 函数getFilterVals(){ 过滤器=新对象(); if($('.webgrid过滤器#chkFilterAlfIntell')。是(':checked')){ 过滤器。智能=1; } 否则{ filters.alfIntelligence=0; } 如果($('.webgrid过滤器#chkFilterAlfConn')。是(':checked')){ filters.alfConnect=1; } 否则{ filters.alfConnect=0; } 如果($('.webgrid过滤器#chkFilterBrad')。是(':checked')){ filters.brad=1; } 否则{ filters.brad=0; } 回流过滤器; } 函数logUserOff(url){ var answer=confirm('您确定要保存此数据吗?') 若有(答复){ //警报(url+“:”+值); $.ajax({ url:url, 类型:“职位” //数据:价值 }).done(函数(){ $(此).addClass(“完成”); }); 返回true; } 否则{ 返回false; } };
带有隐藏字段的局部视图

@model UserManager.Models.webgrid_validation
<b>@Html.Label("Select a filter: ")</b>
<br />

@Html.Label("Toggle ALF Intelligence users:")
@Html.CheckBoxFor(model => model.chkBoxAlfIntelligence, new
{
    id = "chkFilterAlfIntell",
    onclick = "filterGrid()",
    @checked = "checked"

})
@Html.Hidden("hdnAlfIntelligence", Model.chkBoxAlfIntelligence)

@Html.Label("Toggle ALF Connect users:")
@Html.CheckBoxFor(model => model.chkBoxAlfConnect, new
{
    id = "chkFilterAlfConn",
    onclick = "filterGrid()",
    @checked = "checked"
})
@Html.Hidden("hdnAlfConnect", Model.chkBoxAlfConnect)

@Html.Label("Toggle BRAD users:")
@Html.CheckBoxFor(model => model.chkBoxBrad, new
{
    id = "chkFilterBrad",
    onclick = "filterGrid()",
    @checked = "checked"

})
@Html.Hidden("hdnBrad", Model.chkBoxBrad)
@model UserManager.Models.webgrid\u验证
@Label(“选择过滤器:”)

@Label(“切换ALF智能用户:”) @CheckBoxFor(model=>model.chkBoxAlfIntelligence,新建) { id=“chkFilterAlfIntell”, onclick=“filterGrid()”, @checked=“checked” }) @隐藏(“hdnAlfIntelligence”,Model.chkBoxAlfIntelligence) @Label(“切换ALF连接用户:”) @CheckBoxFor(model=>model.chkBoxAlfConnect,新建) { id=“chkFilterAlfConn”, onclick=“filterGrid()”, @checked=“checked” }) @隐藏(“hdnAlfConnect”,Model.chkBoxAlfConnect) @Label(“切换用户:”) @CheckBoxFor(model=>model.chkBoxBrad,新建) { id=“chkFilterBrad”, onclick=“filterGrid()”, @checked=“checked” }) @隐藏(“hdnBrad”,Model.chkBoxBrad)
控制器

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using UserManager.Models;

namespace UserManager.Controllers
{
    public class UserManagerController : Controller
    {
        //
        // GET: /UserManager/

        public ActionResult Index()
        {
            try
            {
                var model = new UserManagerTestEntities().vw_UserManager_Model;
                return View(model.ToList());

            }
            catch (Exception ex)
            {
                return View(ViewBag);
            }

        }

        [HttpPost]
        public ActionResult Index(int alfConnect, int alfIntelligence, int brad)
        {
            List<UserManager.Models.vw_UserManager_Model> modelList = DAL.getGrid(alfConnect, alfIntelligence, brad);


                        switch (alfConnect)
            {
                case 1:
                    ViewData["chkBoxAlfConnect"] = 1;
                    break;
                case 0:
                    ViewData["chkBoxAlfConnect"] = 0;
                    break;
            }

            switch (alfIntelligence)
            {
                case 1:
                    ViewData["chkBoxAlfIntelligence"] = 1;
                    break;
                case 0:
                    ViewData["chkBoxAlfIntelligence"] = 0;
                    break;
            }

            switch (brad)
            {
                case 1:
                    ViewData["chkBoxBrad"] = 1;
                    break;
                case 0:
                    ViewData["chkBoxBrad"] = 0;
                    break;
            }

            return PartialView("~/Views/Partial/_WebGridUserManager.cshtml", modelList);  
        }

        [ChildActionOnly]
        public ActionResult _WebGridFilter ()
        {
            UserManager.Models.webgrid_validation model = new webgrid_validation();


            return PartialView("~/Views/Partial/_WebGridFilter.cshtml", model);
        }


        //public ActionResult _WebGridFilter(int alfConnect, int alfIntelligence, int brad)
        //{
        //    UserManager.Models.webgrid_validation model = new webgrid_validation();

            //switch (alfConnect)
            //{
            //    case 1:
            //        model.chkBoxAlfConnect = true;
            //        break;
            //    case 0:
            //        model.chkBoxAlfConnect = false;
            //        break;
            //}

            //switch (alfIntelligence)
            //{
            //    case 1:
            //        model.chkBoxAlfIntelligence = true;
            //        break;
            //    case 0:
            //        model.chkBoxAlfIntelligence = false;
            //        break;
            //}

            //switch (brad)
            //{
            //    case 1:
            //        model.chkBoxBrad = true;
            //        break;
            //    case 0:
            //        model.chkBoxBrad = false;
            //        break;
            //}
        //    return PartialView("~/Views/Partial/_WebGridFilter.cshtml", model);
        //}



        #region ajaxMethods
        public ActionResult LookUpGroupName(string q, int limit)
        {

            try
            {
                //TODO: Map list to autocomplete textbox control
                DAL d = new DAL();
                List<string> groups = d.groups();

                var GroupValue = groups
                    .Where(x => x.Contains(q))
                    .OrderBy(x => x)
                    .Take(limit)
                    .Select(r => new { group = r });

                // Return the result set as JSON
                return Json(GroupValue, JsonRequestBehavior.AllowGet);
            }
            catch (Exception ex)
            {
                return View(ex.ToString());
            }
        }

        public ActionResult LogUserOff(string userid)
        {

            try
            {
                //TODO: Map list to autocomplete textbox control

                return View();

            }
            catch (Exception ex)
            {
                return View(ex.ToString());
            }
        }

        //[HttpPost]
        //public ActionResult FilterGrid(int alfConnect, int alfIntelligence, int brad)
        //{
        //    List<UserManager.Models.vw_UserManager_Model> modelList  = DAL.getGrid(alfConnect, alfIntelligence, brad);

        //    return PartialView("_WebGridUserManager", modelList);
        //}

        #endregion

        #region crud
        public ActionResult CreateUser()
        {
            //var data = new UserManager.Models.UserManagerTestEntities();
            ViewBag.Message = "Create New User";
            var model = new vw_UserManager_Model();
            return View(model);
        }

        [HttpPost]
        public ActionResult CreateUser (vw_UserManager_Model model)
        {

                int outcome = 0;
                if (ModelState.IsValid)
                {
                    //var data = new UserManager.Models.UserManagerTestEntities();
                    // Pass model to Data Layer
                     outcome = UserManager.DAL.CreateUser(model, outcome);
                    //data.SaveChanges();
                }

                if (outcome > 0) // Success
                {

                    return RedirectToAction("showSuccess", model);

                }
                else // Failure
                {
                    return RedirectToAction("showError", new { ErrorMessage = "Error" });
                }
        }

        public ActionResult EditUser(Guid userid, string salutation, string firstname, string lastname, string password, Nullable<bool> isactive,  Nullable<int> maxconcurrentusers, string email, string module, string group)
        {
            vw_UserManager_Model editUser = new vw_UserManager_Model();
            editUser.userid = userid;
            editUser.salutation = salutation;
            editUser.firstname = firstname;
            editUser.lastname = lastname;
            editUser.password = password;
            editUser.isactive = isactive;
            editUser.MaxConcurrentUsers = maxconcurrentusers;
            editUser.email = email;
            editUser.module_name = module;
            editUser.group_name = group;
            return View(editUser);
        }

        [HttpPost]
        public ActionResult EditUser(vw_UserManager_Model editUser)
        {
            if (ModelState.IsValid)
            {
                UserManager.DAL.EditUser(editUser);
            }

            return View();
        }

        public ActionResult DeleteUser(Guid userid, string username, string salutation, string firstname, string lastname, string password, bool isactive, string email, string module, string group)
        {
            vw_UserManager_Model DeleteUser = new vw_UserManager_Model();
            DeleteUser.userid = userid;
            DeleteUser.UserName = username;
            DeleteUser.salutation = salutation;
            DeleteUser.firstname = firstname;
            DeleteUser.lastname = lastname;
            DeleteUser.password = password;
            DeleteUser.isactive = isactive;
            DeleteUser.email = email;
            DeleteUser.module_name = module;
            DeleteUser.group_name = group;

            return View(DeleteUser);
        }

        [HttpPost]
        public ActionResult DeleteUser(vw_UserManager_Model deleteUser)
        {
            if (ModelState.IsValid)
            {
                UserManager.DAL.DeleteUser(deleteUser);
                return RedirectToAction("showSuccess", new { SuccessMessage = "Success" });
            }

            return View();
        }
        #endregion crud

        #region successErrorHandling
        public ActionResult showError(List<string> ErrorMessage)
        {
                ViewBag.ErrorMessage = ErrorMessage[0];
                return View("ErrorMessageView");
        }

        public ActionResult showSuccess(vw_UserManager_Model model)
        {

            return View("SuccessMessageeView", model);
        }
        #endregion
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Web;
使用System.Web.Mvc;
使用UserManager.Models;
命名空间UserManager.Controllers
{
公共类UserManagerController:控制器
{
//
//获取:/UserManager/
公共行动结果索引()
{
尝试
{
var model=new UserManagerTestEntities().vw_UserManager_model;
返回视图(model.ToList());
}
捕获(例外情况除外)
{
返回视图(视图包);
}
}
[HttpPost]
公共行动结果索引(int-alfConnect、int-alfIntelligence、int-brad)
{
List modelList=DAL.getGrid(alfConnect、alfIntelligence、brad);
开关(连接)
{
案例1:
ViewData[“chkBoxAlfConnect”]=1;
打破
案例0:
ViewData[“chkBoxAlfConnect”]=0;
打破
}
开关(智能)
{
案例1:
ViewData[“CHKBOxalFinIntelligence”]=1;
打破
案例0:
ViewData[“CHKBOxalFinIntelligence”]=0;
打破
}
开关(布拉德)
{
案例1:
ViewData[“chkBoxBrad”]=1;
打破
案例0:
ViewData[“chkBoxBrad”]=0;
打破
}
返回PartialView(“~/Views/Partial/_WebGridUserManager.cshtml”,modelList);
}
[仅限儿童]
公共操作结果\u WebGridFilter()
{
UserManager.Models.webgrid_验证模型=新的webgrid_验证();