【问题标题】:Edit controller action is not receiving the Id form JQgrid编辑控制器操作未收到 JQgrid 的 Id 表单
【发布时间】:2014-02-19 08:50:07
【问题描述】:

嗨,我从 MVC 中的 JQgrid 开始,我正在 JQgrid 中执行 CRUD 操作,当我加载页面时,网格将填充所需的数据,但是当我删除或编辑时,我收到错误,当我检查它时,错误是编辑操作预期的用户 ID 未从视图中初始化。 我的视图是这样的

   <table id="jQGridDemo">
    </table>
    <div id="jQGridDemoPager">
    </div>
    <script type="text/javascript">
        jQuery("#jQGridDemo").jqGrid({
            url: 'RTGUser/GetUserDetails',

            datatype: "json",
            colNames: ['Id', 'Name', 'Designation', 'City'],
            colModel: [
             { name: 'Id', index: 'Id', width: 40, align: 'center', sortable: true, editable: false, key: true, editrules: { required: true} },
              { name: 'Name', index: 'Name', width: 40, align: 'center', sortable: true, editable: true, edittype: 'text', editrules: { required: true} },
              { name: 'Designation', index: 'Designation', width: 400, align: 'center', sortable: true, editable: true, edittype: 'text', editrules: { required: true} },
              { name: 'City', index: 'City', width: 150, align: 'center', sortable: true, editable: true, edittype: 'text', editrules: { required: true} }
              ],

            mtype: 'GET',
            loadonce: true,
            rowList: [5, 10, 20, 30],
            pager: '#jQGridDemoPager',
            sortname: 'Id',
            viewrecords: true,
            sortorder: 'desc',
            caption: "List Of Users",
             editurl: "RTGUser/EditUser",
            onSelectRow: function(Id){
        if(id && id!==lastsel){
            jQuery('#rowed3').jqGrid('restoreRow',lastsel);
            jQuery('#rowed3').jqGrid('editRow',Id,true);
            lastsel=Id;
        }
    },


        });

        jQuery("#jQGridDemo").jqGrid('navGrid', '#jQGridDemoPager',
      { edit: true, add: true, del: true, search: true },


           { url: "/RTGUser/EditUser/", closeAfterEdit: true, beforeShowForm: function (formid) { $("#Id",formid).hide(); } },
           { url: "/RTGUser/AddNewUser/", closeAfterAdd: true, beforeShowForm: function (formid) { $("#Id", formid).hide(); } },
           { url: "/RTGUser/DeleteUser/" }, {});

        $("#search").filterGrid("#grid", {
            gridModel: false,
            filterModel: [{
                label: 'Search',
                name: 'search',
                stype: 'text'
            }]
               });


    </script>

我的控制器是

[AcceptVerbs(HttpVerbs.Post)]
    public ActionResult EditUser(string userId, string name, string desig, string city)
    {
        int uId = Convert.ToInt32(userId);
        try
        {
            var query = from u in db.Users
                        where u.Id.Equals(userId)
                        select u;
            User i = db.Users.SingleOrDefault(u => u.Id == uId);
            if (!(i == null))
            {
                var user = query.First();
                user.Name = name;
                user.Designation = desig;
                user.City = city;
                db.SaveChanges();


            }
            return Json(true);
        }
        catch (Exception)
        {
            // Do some error logging stuff, handle exception, etc.
            return Json(false);
        }
    }

我应该怎么做才能从我的视图中获取 mt id。 提前致谢

【问题讨论】:

  • 您需要在控制器中保持与视图中相同的变量名称,或者反之亦然。

标签: jquery asp.net-mvc jqgrid-asp.net


【解决方案1】:

将您的操作签名更改为:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult EditUser(string Id, string Name, string Designation, string City)
{
} 

没有神奇的方法可以将值附加到您的参数,绑定器将简单地通过名称匹配它们。

【讨论】:

  • 大家好,谢谢,它运行良好。并且意味着当遇到另一个问题时,它与错误状态有关:“未找到”。错误代码:添加记录时出现 404。为什么会这样。请帮忙。
  • @NandishHosmane 确保您的控制器中有操作 AddNewUser,接受相同的参数。如果仍然不起作用,请跟踪您的请求到哪里(最简单的方法:在 IE 或 Firefox 中打开开发人员工具栏,F12,转到“网络”选项卡,然后启动网格操作)
猜你喜欢
  • 2010-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-07
  • 1970-01-01
  • 1970-01-01
  • 2015-02-14
  • 1970-01-01
相关资源
最近更新 更多