Я новичок в нокауте. 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
},