如何使用文件上载字段扩展angular-xeditable可编辑行

Ved*_*ran 6 upload file angularjs

我试图延长(我的真实的例子非常相似)角xeditable -可编辑的行-在这里描述的例子: http://vitalets.github.io/angular-xeditable/#editable-row 或它的jsfiddle链接在这里: HTTP: //jsfiddle.net/NfPcH/93/

所以我有一个额外的列用于上传每个行/项目的文件.如果它可以只是类型文件的输入元素,那很好,但我打开其他解决方案.通常,我的专栏看起来像这样:

                <td>
                    <span editable-text="template.description" e-name="description" e-form="rowform" e-required>
                        {{ template.description || 'empty' }}
                    </span>
                </td>
Run Code Online (Sandbox Code Playgroud)

但是,现在我想添加我的自定义列,我尝试使用或不使用所有提到的属性的输入元素:

                <td>

                    <input id="file"
                           accept="application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
                           ng-show="rowform.$visible"
                           class="btn btn-default"
                           name="file"
                           type="file"
                           e-name="file"
                           e-form="rowform"
                           value="{{ user.file || 'empty' }}" />
                </td>
Run Code Online (Sandbox Code Playgroud)

在任何情况下,当我执行此代码时,在尝试保存行后,我无法在我的角度控制器中获取 - file - value:

    $scope.saveUser = function (data, id) {
        //$scope.user not updated yet
        angular.extend(data, { id: id });
        angular.extend(data, { file: file });
        return $http.post('/saveUser', data);
    };
Run Code Online (Sandbox Code Playgroud)

我的 - 数据 - 对象在这里与所有其他属性,如 - 描述 - 但没有 - 文件 - 属性!

当然,我扩展了onbeforesave事件的形式:

... form editable-form name ="rowform" onbeforesave ="saveTemplate($ data,user.id,user.file)" ...

有什么建议吗?

谢谢,Vedran

Ved*_*ran 0

我被这个问题困住了。

当我认为一切都很好时,因为我通过使用此处提到的创建自定义指令的解决方案在我的角度模型中获得了文件对象:

<input type="file"/> 的 ng-model

...然后新的问题开始困扰我。

我无法在绑定过程中将此文件对象映射到 MVC 控制器的 HttpPostedFileBase 参数。

我尝试了一切,例如排除属性并向我的 MVC 控制器添加单独的参数,或者创建自定义 MVC 模型绑定器,但我看到的示例使用了 ModelBinderResult 类,我在任何命名空间中的 MVC 5 类下都找不到该类。

这个 File 对象肯定在这里,但我无法让它工作。我知道该对象不为空或为空,因为如果我指定控制器输入参数的类型=>对象,则它不为空。

请,我们非常欢迎任何帮助!

韦德兰