FineUI 官方论坛

标题: 【已确认】FineUICore页面Post到后端的数据丢失? [打印本页]

作者: 消失的键盘    时间: 2019-6-21 14:25
标题: 【已确认】FineUICore页面Post到后端的数据丢失?
v5.5.0  请见示例
https://core.fineui.com/#/IFrame/GridIFrame

[attach]11995[/attach]

作者: 消失的键盘    时间: 2019-6-21 14:36
应该是:  不是没有值,是一个null值。
在mvc下面是string.Empty。看能不能统一?
作者: sanshi    时间: 2019-6-21 15:40
已确认,这是示例代码的BUG。

由于后台通过 JObject typeParams 接收前台传入的参数,所以下面的代码:
  1. function doCustomPostBack(type, params) {
  2.             var grid1 = F.ui.Grid1;

  3.             // 触发后台事件
  4.             F.doPostBack('@Url.Action("MyCustomPostBack")', {
  5.                 type: type,
  6.                 gridSourceKey: grid1.getAttr('data-source-key'),
  7.                 gridFields: grid1.fields,
  8.                 typeParams: params
  9.             });
  10.         }
复制代码
应该改为:
  1. function doCustomPostBack(type, params) {
  2.             var grid1 = F.ui.Grid1;

  3.             // 触发后台事件
  4.             F.doPostBack('@Url.Action("MyCustomPostBack")', {
  5.                 type: type,
  6.                 gridSourceKey: grid1.getAttr('data-source-key'),
  7.                 gridFields: grid1.fields,
  8.                 typeParams: F.toJSON(params)
  9.             });
  10.         }
复制代码


示例已更新:https://core.fineui.com/#/IFrame/GridIFrame
[attach]11996[/attach]

作者: 消失的键盘    时间: 2019-6-21 17:23
sanshi 发表于 2019-6-21 15:40
已确认,这是示例代码的BUG。

由于后台通过 JObject typeParams 接收前台传入的参数,所以下面的代码:

如果不在前端 doPostBack,像fineuimvc那样,直接在后端写控件名称的方法来使用。
public IActionResult MyCustomPostBack(string ttbSearch)

这里在finuicore里面就是null,而fineuimvc下面是string.empty.

在后端代码就要进行处理:

  1. string searchText = ttbSearchMessage?.Trim();
复制代码



同理在appbox中 UserSelectTitle 下面代码就会报错

  1. ViewBag.TitleSelectedValueArray = ids.Split(',');
复制代码


就要改成:

  1. ViewBag.TitleSelectedValueArray = String.IsNullOrEmpty(ids) ? new string[0] : ids.Split(',');
复制代码


不知道这个算不算bug。不然从fineuimvc 迁移到 finuicore 就要多一些工作量,而且代码也不优雅了!

作者: sanshi    时间: 2019-6-24 11:17
消失的键盘 发表于 2019-6-21 17:23
如果不在前端 doPostBack,像fineuimvc那样,直接在后端写控件名称的方法来使用。
public IActionResult ...

我试了一下,的确是这样。

不过对 string ttbSearch 的模型绑定是框架做的,可以说这是框架处理的差异。所以对 ttbSearch 可以先进行非空判断(在进行 Split 之前,进行非空判断是有必要的),就像示例中做的那样。
[attach]11997[/attach]





欢迎光临 FineUI 官方论坛 (https://www.fineui.com/BBS/) Powered by Discuz! X3.4