加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 将json存储在隐藏字段中以反序列化为模型属性列

发布时间:2020-12-16 07:18:18 所属栏目:asp.Net 来源:网络整理
导读:大家早上好.我一直在思考在我的mvc web应用程序中使用plupload的最佳方法,以便在后端创建时将上传的文件与各自的记录结合起来. 我最后把它归结为以下过程 – 这将适用于新记录和现有记录(想想CMS): 创建新记录,使用plupload上传多个文件. 多个文件(表示每个
大家早上好.我一直在思考在我的mvc web应用程序中使用plupload的最佳方法,以便在后端创建时将上传的文件与各自的记录结合起来.

我最后把它归结为以下过程 – 这将适用于新记录和现有记录(想想CMS):

>创建新记录,使用plupload上传多个文件.
>多个文件(表示每个文件的json字符串系列)存储在客户端上,然后通过隐藏字段发回.
>表单模型上的属性包含这些上载文件的结果,因此我可以处理后端业务.

模型(没有不相关属性的粗糙)将如下所示:

public class Record{
    public IList<ClientFile> Files {get;set;}
}

客户端文件如下所示:

public class ClientFile{
    public string UniqueId{get;set;}
}

我的问题在于每次成功上传后我在客户端上拥有的内容(ClientFile的json字符串)以及我如何正确地将其置于隐藏字段并正确绑定,以便我可以在我的模型中准备好客户端文件列表.

我正在思考如何正确构造隐藏字段,以便绑定器知道如何将它们连接到列表,或者做一些自定义反序列化自己将json字符串的集合转换为对象列表.

在我把银行假日周末丢到mvc之前,有没有人有任何智慧.

解决方法

这就是我现在的实现方式:

public class ProductModel
{
    // This is the field bound to the view (hidden field)
    public string FilesValue
    {
        get
        {
            return Files.ToJson<IEnumerable<Plupload>>();
        }
        set
        {
            Files = value.FromJson<IEnumerable<Plupload>>();
        }
    }
    public IEnumerable<Plupload> Files { get; private set; }
}

(ToJson& FromJson只是我用来快速序列化和反序列化对象的扩展方法.)

在我看来:

<input type="hidden" name="FilesValue" id="FilesValue" />

我有一个内联脚本,可以在加载表单时转换隐藏字段的值:

Bundles.AddInlineScript("fileManager.dserialize('" + Html.Raw(Model.FilesValue) + "')");

并且在表单之前运行的客户端脚本将发布到服务器:

function preSubmit(e) {
// need to force upload
var $form = $(e.currentTarget),hidden = $form.find('#FilesValue')[0];
if (uploader.files.length > 0) {
  uploader.bind('UploadComplete',function () {
    serialize(hidden);
    $form.trigger('submit');
  });
  uploader.start();
  return false;
} else {
  serialize(hidden);
  return true;
}
}

n.b uploader是对plupload的引用,而serialize()是一个本地方法,它将文件数组转换为json,并将其发回.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读