public static string Upload(this Tk5FieldInfoEx field, DataRow row, bool needId)
        {
            TkDebug.AssertArgumentNull(field, "field", null);

            var upload = field.AssertUpload();

            HtmlAttributeBuilder builder = new HtmlAttributeBuilder();
            builder.Add("data-control", "Upload");
            builder.Add("data-fileSize", upload.SizeField);
            builder.Add("data-serverPath", upload.ServerPathField);
            builder.Add("data-contentType", upload.MimeTypeField);
            AddNormalAttribute(field, builder, field.NickName, needId, true);

            IUploadProcessor processor = upload.CreateUploadProcessor();
            UploadInfo info = row == null ? null : processor.CreateValue(upload, row);
            if (info != null)
                builder.Add("data-value", info.ToJson());

            return string.Format(ObjectUtil.SysCulture, Html.Upload, builder.CreateAttribute(),
                ERROR_LABEL);
        }
        public static string DisplayUpload(this Tk5FieldInfoEx field, DataRow row)
        {
            TkDebug.AssertArgumentNull(field, "field", null);

            Tk5UploadConfig upload = field.AssertUpload();
            IUploadProcessor processor = upload.CreateUploadProcessor();
            return processor.Display(upload, row);
        }