Mvc3.0 按钮放在外部的增删改查

  相信网上太多太多的Mvc3.0增删改查教程,但是千篇一律,新增放列表上,编辑和删除放到列表中的行来操作。但是项目中肯定不是一成不变的,小弟我不幸赶上,我自己想把编辑和删除按钮放到列表页外进行操作,查了半天百度,无奈结果不尽如人意。所以今天发个小文章,把我实现的编辑和删除写下来,虽然很简单,但是留为记录,作为参考。

  首先定义列表页,我的编辑和删除是放到列表页上的,如下代码:

<p>
    @Html.ActionLink("新增用户", "UserCreate", "System", null, new { target = "_blank" })
    @Html.ActionLink("修改用户", "UserModify", "System", null, new { id="Modify", target = "_blank", onclick = "return GetRadioValue(this.href)" })
    @Html.ActionLink("删除用户", "UserDelete", "System", null, new { onclick = "return DeleteConfirm(this)" })
    @Html.ActionLink("查看用户", "Details")
</p>

<table class="table_list" border="0">
    <colgroup>
        <col width="50" />
        <col width="50" />
        <col width="200" />
        <col width="200" />
        <col width="200" />
        <col width="200" />
        <col width="200" />
        <col width="200" />
    </colgroup>
    <thead>
        <tr>
            <td>
                选择
            </td>
            <td>
                序号
            </td>
            <td>
                登录名
            </td>
            <td>
                姓名
            </td>
            <td>
                部门
            </td>
            <td>
                职位
            </td>
            <td>
                分机
            </td>
            <td>
                邮箱
            </td>
        </tr>
    </thead>
    <tbody>
        @foreach (var item in ViewBag.DataTable.Rows)
        {
            <tr>
                <td align="center">
                    <input type="radio" name="rdoSelect" value='@item["EmployeeID"]'/>
                </td>
                <td align="center">
                    @item["Number"]
                </td>
                <td>
                    @item["LoginName"]
                </td>
                <td>
                    @item["EmployeeName"]
                </td>
                <td>
                    @item["Department"]
                </td>
                <td>
                    @item["Position"]
                </td>
                <td>
                    @item["Extension"]
                </td>
                <td>
                    @item["Email"]
                </td>
            </tr>
        }
    </tbody>
</table>

    JS代码:

<script type="text/javascript">
  //修改方法
   function GetRadioValue(actionLink) {         
     var radio = $("input[name='rdoSelect']:checked");
     if (radio.length == 0) {
            alert("请选择一条数据进行修改!");
            return false;
        }
        else {
            //找到的位置是U的位置,所以要加10
            var url = actionLink.substring(0, actionLink.indexOf("UserModify") + 10);
            var actionUrl = url + "/" + radio.val();
            $("#Modify").attr("href", actionUrl);
        }
    }
  //删除方法
    function DeleteConfirm(actionLink) {
        var radio = $("input[name='rdoSelect']:checked");
        if (radio.length == 0) {
            alert("请选择一条数据进行删除!");
            return false;
        }
        else {
            if (confirm("确认删除吗?")) {
                var actionUrl = actionLink.href + "/" + radio.val();
                actionLink.href = actionUrl;
            }
            else {
                return false;
            }
        }
    }
</script>

    刚开始把编辑和删除放到列表上面不知道怎么调用action,而ActionLink可以定义html的属性,比如我的代码:

@Html.ActionLink("修改用户", "UserModify", "System", null, new { id="Modify", target = "_blank", onclick = "return GetRadioValue(this.href)" })

通过定义它的onclick属性来调用js获取选中的radio,然后再把ActionLink的href加上我要修改的行的ID:

//找到的位置是U的位置,所以要加10
var url = actionLink.substring(0, actionLink.indexOf("UserModify") + 10);

var actionUrl = url + "/" + radio.val();

$("#Modify").attr("href", actionUrl);    

 这样就可以就可以跳刀UserModify页面进行修改了。就这么简单,但是对于一个没用过Mvc的屌丝程序猿来说,实在不知道怎么实现。

   另外删除和编辑稍微有点不一样的就是删除的action要定义成[HttpGet]的,不用像教程里面的还的跳转到删除页面。

#region 删除按钮事件

        /// <summary>
        /// 删除按钮事件
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        [HttpGet]
        public ActionResult UserDelete(String id)
        {
            EmployeeBLL empBLL = new EmployeeBLL();

            if (empBLL.DeleteEmployee(id) > 0)
                return RedirectToAction("UserManager");

            return View();
        }

#endregion

 

 

   最后贴上我的列表、编辑、删除的action,请大家指正。

#region 员工管理页面
        /// <summary>
        /// 员工管理页面
        /// </summary>
        /// <returns></returns>
        public ActionResult UserManager()
        {
            EmployeeBLL empBLL = new EmployeeBLL();

            DataTable dt = empBLL.GetAllEmployee();

            DataColumn dc = new DataColumn("Number");
            dt.Columns.Add(dc);
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                dt.Rows[i]["Number"] = i + 1;
            }


            ViewBag.DataTable = dt;

            return View();
        }
 #endregion

 #region 修改页面
        /// <summary>
        /// 修改页面
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public ActionResult UserModify(string id)
        {
            EmployeeModel empModel = new EmployeeModel();
            EmployeeBLL empBLL = new EmployeeBLL();

            DataTable dt = empBLL.GetEmployeeByID(id);

            if (dt != null && dt.Rows.Count > 0)
            {
                //将DataTable转化成EmployeeModel
                empModel = DataTableToEmployeeModel(empModel, dt);
            }

            return View(empModel);
        }

        /// <summary>
        /// 将DataTable转化成EmployeeModel
        /// </summary>
        /// <param name="empModel"></param>
        /// <param name="dt"></param>
        private EmployeeModel DataTableToEmployeeModel(EmployeeModel empModel, DataTable dt)
        {
            empModel.EmployeeID = dt.Rows[0]["EmployeeID"].ToString();
            empModel.EmployeeName = dt.Rows[0]["EmployeeName"].ToString();
            empModel.LoginName = dt.Rows[0]["LoginName"].ToString();
            empModel.Password = dt.Rows[0]["Password"].ToString();
            empModel.Sex = Convert.ToInt32(dt.Rows[0]["Sex"]);
            empModel.IDNumber = dt.Rows[0]["IDNumber"].ToString();
            empModel.AnswerCustomerCall = Convert.ToInt32(dt.Rows[0]["AnswerCustomerCall"].ToString());
            empModel.Education = dt.Rows[0]["Education"].ToString();
            empModel.Major = dt.Rows[0]["Major"].ToString();
            empModel.CellPhone = dt.Rows[0]["CellPhone"].ToString();
            empModel.Email = dt.Rows[0]["Email"].ToString();
            empModel.Department = dt.Rows[0]["Department"].ToString();
            empModel.Position = dt.Rows[0]["Position"].ToString();
            empModel.TelePhone = dt.Rows[0]["TelePhone"].ToString();
            empModel.Extension = dt.Rows[0]["Extension"].ToString();
            empModel.StaffLevel = dt.Rows[0]["StaffLevel"].ToString();
            empModel.CommissionerLevel = dt.Rows[0]["CommissionerLevel"].ToString();
            empModel.StaffState = dt.Rows[0]["StaffState"].ToString();
            empModel.EntryDate = Convert.ToDateTime(dt.Rows[0]["EntryDate"].ToString());
            empModel.ConfirmationDate = Convert.ToDateTime(dt.Rows[0]["ConfirmationDate"].ToString());
            empModel.DepartureDate = Convert.ToDateTime(dt.Rows[0]["DepartureDate"].ToString());
            empModel.AllowLogin = Convert.ToInt32(dt.Rows[0]["AllowLogin"].ToString());

            return empModel;
        }

        /// <summary>
        /// 修改页面按钮事件
        /// </summary>
        /// <param name="emp"></param>
        /// <returns></returns>
        [HttpPost]
        public ActionResult UserModify(EmployeeModel emp)
        {
            if (ModelState.IsValid)
            {
                EmployeeBLL empBLL = new EmployeeBLL();

                if (empBLL.ModifyEmployee(emp) > 0)
                    return RedirectToAction("UserManager");
            }

            return View(emp);
        }
  #endregion

  #region 删除按钮事件

        /// <summary>
        /// 删除按钮事件
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        [HttpGet]
        public ActionResult UserDelete(String id)
        {
            EmployeeBLL empBLL = new EmployeeBLL();

            if (empBLL.DeleteEmployee(id) > 0)
                return RedirectToAction("UserManager");

            return View();
        }

  #endregion

 

 

posted @ 2013-09-26 20:08  Christopher—高  阅读(295)  评论(0)    收藏  举报