JqG​​rid形成服务器validation和自定义错误消息

我有可编辑的网格工具栏,其中包含用于编辑添加和删除记录的按钮。

  1. 我想使用我的asp.mvc中的服务器端validation来显示jqgrid编辑表单上的validation消息。 (这是有效的吗?)
  2. 当应用程序中发生exception时,我想在编辑表单上覆盖消息(内部服务器错误…)。 (这应该是可能的,但我不知道如何做到这一点,也许使用errorTextFormat ,但是如何?)

有人可以举例吗?

你是对的, errorTextFormat是在HTTP错误的情况下获取服务器响应的正确方法,并显示相应的错误消息。

首先,您的服务器必须在HTTP标头中返回带有HTTP错误代码的响应。 然后你应该定义你的errorTextFormat事件句柄的实现,作为navGrid的prmEditprmAddprmDel参数的一部分,或者你可以覆盖jqGrid默认设置(见这里 )。 我个人更喜欢通过修改jQuery.jgrid.editjQuery.jgrid.del来设置jQuery.jgrid.del 。 您可以在以下旧答案中找到相应代码的示例。

errorTextFormat函数的确切代码应该取决于服务器响应的格式 。 我在站点内部使用带有WFC的ASP.NET MVC,服务器可以返回JSON编码的字符串响应(如果错误来自throw new WebFaultException ("my error text", statusCode);我明确抛出的)或者有时HTML响应。 在我的errorTextFormat实现中,我测试了我收到的哪种错误响应并转换服务器响应。 这是代码片段:

 my.errorTextFormat = function (data) { var str = data.responseText.substr(0, 1); var str1 = data.responseText.substr(0, 6).toLowerCase(); if (str === '"') { var errorDetail = jQuery.parseJSON(data.responseText); var s = "Fehler: '"; s += data.statusText; s += "'. Details: "; s += errorDetail; return s; } else if (str1 === "" || data.responseText.substr(0, 169) === '\r\n\r\n([\s\S]*)<\/body>/.exec(data.responseText)[1]; return bodyHtml; //bodyContents1; } else { var res = "Status: '"; res += data.statusText; res += "'. Felhercode: "; res += data.status; return res; } }; jQuery.extend(jQuery.jgrid.edit, { ... errorTextFormat: my.errorTextFormat }); jQuery.extend(jQuery.jgrid.del, { ... errorTextFormat: Testportal.errorTextFormat }); 

代码并不完美,但您可以使用它来创建自己的代码。