FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

查看: 1350|回复: 4

【已确认】FineUICore页面Post到后端的数据丢失?

[复制链接]
发表于 2019-6-21 14:25:31 | 显示全部楼层 |阅读模式
v5.5.0  请见示例
https://core.fineui.com/#/IFrame/GridIFrame


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
 楼主| 发表于 2019-6-21 14:36:04 | 显示全部楼层
应该是:  不是没有值,是一个null值。
在mvc下面是string.Empty。看能不能统一?
回复 支持 反对

使用道具 举报

发表于 2019-6-21 15:40:11 | 显示全部楼层
已确认,这是示例代码的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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-21 17:23:29 | 显示全部楼层
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 就要多一些工作量,而且代码也不优雅了!
回复 支持 反对

使用道具 举报

发表于 2019-6-24 11:17:59 | 显示全部楼层
消失的键盘 发表于 2019-6-21 17:23
如果不在前端 doPostBack,像fineuimvc那样,直接在后端写控件名称的方法来使用。
public IActionResult ...

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

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|FineUI 官方论坛 ( 皖ICP备13005369号-1 )

GMT+8, 2020-8-9 04:51 , Processed in 0.103929 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表