MVC - 在网格中转换为不显眼的jquery

时间:2013-02-05 14:56:48

标签: jquery asp.net-mvc

下面是一个有效的编辑器模板,但需要进行改进。 具体来说,该复选框有一个onclick事件,调用javascript函数;

AdministratorFlagClickFunc(EMPLOYEEID)

我应该做的是在脚本中指定click()事件。但是,如果模板是网格的一部分,我该怎么做呢?我需要识别每一行复选框的id,加上相关的参数?

@model UserLineViewModel
<tr>
    <td>
        @Html.DisplayFor(x => x.Employee.Forename)
    </td>
    <td>
        @Html.DisplayFor(x => x.Employee.Surname)
    </td>
    <td>
        @Html.DisplayFor(x => x.UserScd.Created)
    </td>
    <td style="text-align: center;">
        @Html.CheckBoxFor(x => x.UserScd.AdminFlag,
                    new { id = "checkBoxAdministratorFlag", 
                        onclick = "AdministratorFlagClickFunc(" + Model.UserScd.EmployeeId + ")" })
    </td>
    <td>
        @Ajax.ActionLink("Remove", "Delete", new { id=Model.UserScd.EmployeeId  }, new AjaxOptions()
                { 
                    OnSuccess="refreshPostback"   
                    , Confirm="Are you sure that you want to remove this person?"
                    , HttpMethod = "post"
                })
    </td>
</tr>

1 个答案:

答案 0 :(得分:0)

问题是你想将点击处理程序移出标记并进入脚本吗?您可以通过css类附加处理程序(不是id,因为每页应该是唯一的)并通过隐藏元素获取emp id:

标记:

<td style="text-align: center;">@Html.CheckBoxFor(x => x.UserScd.AdminFlag, new { class = "checkBoxAdministratorFlag"})@Html.HiddenFor(Model.UserScd.EmployeeId) </td>

脚本:

$('.checkboxAdministratorFlag').click(function() {

    var empId = $(this).next('input').val();
    //....

});