Обновите изображение в папке сервера, используя файл типа ввода из aspx с Knockout. js для представления модели в mvc контроллере - PullRequest
0 голосов
/ 31 января 2020

Я новичок в нокауте. js и я не понимаю этого. У меня есть старый проект для новых функций. У меня есть:

  • ProductModelView со строкой imageName и другими атрибутами
  • Контроллер, который реализует ActionResul addProduct (продукт ProducModelView)
  • .aspx со всеми html и нокаутом js

Я думаю, что я должен использовать HttpPostedFileBase, НО я не знаю, как и где я могу это использовать.

Я хочу поместить изображение в папку на сервере, например wwwroot ../images

что мне нужно сделать?

проект в Visual Studio 2010 Framework 4.0

PD: мой английский sh плохой


<tr>

                <td style="width: 111px" class="formLabel">
                    <label for="imgGrande">Grande</label>
                </td>
                <td>
                   <input id="fileGrande" type="file" onchange="showpreviewGrande(this);"/>
                </td>
                <td >
                     <img id="ImgG" data-bind="value: producto.ImagenGrande, valueUpdate: 'afterkeydown'"  src="" alt="" style="border-width: 0px; visibility: hidden; margin-left:-200px;" />
                </td>
</tr>


<script  type="text/javascript" >

    function showpreviewGrande(input) {

        if (input.files && input.files[0]) {

            var reader = new FileReader();
            reader.onload = function (e) {
                $('#ImgG').css('visibility', 'visible');
                $('#ImgG').attr('src', e.target.result);
            }
            reader.readAsDataURL(input.files[0]);
        }

    }


и mybe эта часть кода в нокауте. js с использованием ajax не имеет значения, но ...

<script  type="text/javascript" >
var initFiltroProducto = { CodigoReferencia: null, CategoriaCodigo: null, SubCategoriaCodigo: null, CatalogoCodigo: null };
var initialData = <%= new JavaScriptSerializer().Serialize(Model) %>;
<%--agrego inputFile--%>
var initProducto = { Codigo: null, CodigoReferencia: null, Titulo: null, DescripcionCorta: null, DescripcionLarga: null, Puntos: null, StockMinimo: null, StockMaxio: null, Legales: null, VigenciaDesde: null, VigenciaHasta: null, PrecioSinIva: null, ControlaStock: null, CategoriaCodigo: null, CategoriaDescripcionCorta: null, SubCategoriaCodigo: null, SubCategoriaDescripcionCorta: null, Catalogos: [], Activo: null,  Destacado: null, ImagenGrande: null, ImagenChica: null, Muestras1: [], Muestras2: [], Muestras3: [], SucursalesMarca: [], Response: {HasErrors: false, Messages: []} };

var viewModel = {productos: ko.observableArray(initialData.Productos),
                 productosFiltered: ko.observableArray([]),
                 producto : ko.mapping.fromJS(initProducto),
                 filtroProducto: ko.mapping.fromJS(initFiltroProducto),
                 filterView: ko.observable(true),
                 mode: ko.observable(""),
                 muestra: ko.observable(""),
                 grupo: ko.observable("grupo1"),
                 selectedMuestras: ko.observableArray([]),
                 categorias: ko.observableArray(initialData.Categorias),
                 subCategorias: ko.observableArray(initialData.SubCategorias),
                 catalogos: ko.observableArray(initialData.Catalogos),
                 catalogosDisponiblesSelected :  ko.observableArray([]),
                 catalogosSelected :  ko.observableArray([]),
                 addCatalogos: function() {

insert: function(){
                    var viewModel = this;
                    $.ajax({
                        url: "/CatalogoAdmin/AddProducto/",
                        type: "POST",
                        dataType: "json",
                        contentType: 'application/json; charset=utf-8',
                        async: true,
                        data: ko.mapping.toJSON(viewModel.producto),
                        success: function(response){
                                response.VigenciaDesde = response.VigenciaDesde == null ? null : response.VigenciaDesde.toDateFromAspNet();
                                response.VigenciaHasta = response.VigenciaHasta == null ? null : response.VigenciaHasta.toDateFromAspNet();

                                ko.mapping.updateFromJS(viewModel.producto, response);

                                if(!viewModel.producto.Response.HasErrors()){
var productosAux = viewModel.productos();
                                    productosAux.push(response);                                    
                                    viewModel.productos([]);
                                    viewModel.productos(productosAux);

                                    viewModel.clearProducto();
                                    viewModel.clearFiltro();
                                    viewModel.filterView(true);
                                }
                            }
                        });//end ajax method 

update: function(){
                       var viewModel = this;

                        $.ajax({
                            url: "/CatalogoAdmin/UpdateProducto/",
                            type: "POST",
                            dataType: "json",
                            contentType: 'application/json; charset=utf-8',
                            async: true,
                            data: ko.mapping.toJSON(viewModel.producto),
                            success: function(response){
                                    response.VigenciaDesde = response.VigenciaDesde == null ? null : response.VigenciaDesde.toDateFromAspNet();
                                    response.VigenciaHasta = response.VigenciaHasta == null ? null : response.VigenciaHasta.toDateFromAspNet();
                                    ko.mapping.updateFromJS(viewModel.producto, response);

                                    if(!viewModel.producto.Response.HasErrors()){
                                        var e = viewModel.getProducto(viewModel.producto.Codigo());

                                        e.CodigoReferencia = viewModel.producto.CodigoReferencia();
                                        e.Titulo = viewModel.producto.Titulo();
                                        e.DescripcionCorta = viewModel.producto.DescripcionCorta();
                                        e.DescripcionLarga = viewModel.producto.DescripcionLarga();
                                        e.Puntos = viewModel.producto.Puntos();
                                        e.StockMinimo = viewModel.producto.StockMinimo();
                                        e.StockMaximo = viewModel.producto.StockMaximo();
                                        e.Legales = viewModel.producto.Legales();
                                        e.VigenciaDesde = viewModel.producto.VigenciaDesde();
                                        e.VigenciaHasta = viewModel.producto.VigenciaHasta();
                                        e.PrecioSinIva = viewModel.producto.PrecioSinIva();
                                        e.ControlaStock = viewModel.producto.ControlaStock();
                                        e.CategoriaCodigo = viewModel.producto.CategoriaCodigo();
                                        e.SubCategoriaCodigo = viewModel.producto.SubCategoriaCodigo();
                                        e.Catalogos = viewModel.producto.Catalogos() || [];
                                        e.Activo = viewModel.producto.Activo();
                                        e.Destacado = viewModel.producto.Destacado();
                                        e.ImagenGrande = viewModel.producto.ImagenGrande();
                                        e.ImagenChica = viewModel.producto.ImagenChica();
                                        e.Muestras1 = viewModel.producto.Muestras1() || [];
                                        e.Muestras2 = viewModel.producto.Muestras2() || [];
                                        e.Muestras3 = viewModel.producto.Muestras3() || [];


                                        var productosAux = viewModel.productos();                                        
                                        viewModel.productos([]);
                                        viewModel.productos(productosAux);

                                        viewModel.clearProducto();
                                        viewModel.clearFiltro();
                                        viewModel.filterView(true);
                                    }
                                }
                            });//end ajax method                                                                                                                                                                                                                                                                                                                                                                                                                       
                 }, 

...