将值从javascript传递到mvc4中的ajax

时间:2013-11-27 10:27:03

标签: javascript ajax asp.net-mvc-4

我需要从网格中选择一个值并将其传递给ajax。我收到的错误是“Id undefined”。任何人都可以建议我解决这个问题。记录最多被删除的网格中显示的内容。点击按钮选中的值必须得到ajax函数才能删除进程。值s移动到ajax但是得到了policyid未定义的错误提前感谢。

网格列代码:

@{
    var grid = new WebGrid(Model.Policy, rowsPerPage: 20, selectionFieldName: "selectedRow", ajaxUpdateContainerId: "gridcal");
              grid.Pager(WebGridPagerModes.NextPrevious);}
    @grid.GetHtml(
    tableStyle: "webgrid-table",
    headerStyle: "webgrid-header",
    footerStyle: "webgrid-footer",
    alternatingRowStyle: "webgrid-alternating-row",
    selectedRowStyle: "webgrid-selected-row",
    rowStyle: "webgrid-row-style",
    columns:
        grid.Columns(
        grid.Column("PolicyName","Policy Name",style: "colWidth"),
        grid.Column("PolicyValue","Policy Value",style: "colWidth"),
       // grid.Column ("Delete",format:@<text><a href="@Url.Action("DeletePolicy","Roles",new{PolicyId=item.PolicyId.ToString()})"><img src="~/Images/img-delete-blk-icon.png" width="9" height="9" alt="Delete"/></a> </text>)
        ****grid.Column(format: @<text><input type="image"  onclick="AJAXCall_Fun_DeletePolicy()" src="~/Images/img-delete-blk-icon.png" name="image" width="9" height="9" /></text>)****


            ))

             @if (grid.HasSelection)
                    {

                        <b>Policy Name</b>@AppliedPolicies.PolicyName<br />
                        <b>Policy Value</b>@AppliedPolicies.PolicyValue<br />

                    }

Ajax:

 function AJAXCall_Fun_DeletePolicy() {

    if ($.xhrPool.length > 0) {
        $.each($.xhrPool, function (idx, jqXHR) {
            if (jqXHR) {
                this.abort();
            }
        });
        $.xhrPool = [];
    }


  var PolicyId = PolicyId();
    if (PolicyId.length > 0) {
        $.ajax({

            type: "GET",
            url: "/Roles/DeletePolicy",
            data: { 'PolicyId': JSON.stringify(PolicyId) },
            async: true,
            cache: false,
            datatype: "json",

控制器代码:

    public JsonResult DeletePolicy(string PolicyId)
    {
        bool status = false;
        using (clsBLLGroups objclsBLLGroups = new clsBLLGroups())
        {
            status = objclsBLLGroups.DeletePolicy(UserCookieWrapper.UserAccessToken, PolicyId.ToString());


        }
        return Json(status, JsonRequestBehavior.AllowGet);
    }

1 个答案:

答案 0 :(得分:0)

网格呈现为表格,因此使用Get id of selected row in a table -HTML获取点击行的ID,然后您可以通过ajax调用将其传递给控制器​​。
  你提到PolicyId是控制器代码。如果你想在你的ajax调用中包含模型中的值,你只需要使用@

var PolicyId = '@(Model.PolicyId)';

您也可以将它用于您的网址。我们使用

url: '@Url.Action("DeletePolicy", "Roles")',

我们的网址。希望这有帮助