Upload de imagem do ASP.Net MVC 5 para a pasta
Eu tenho um aplicativo MVC5 muito simples que possui uma página de produto para o cliente e também estou utilizando as operações básicas de CRUD que foram implementadas no MVC 5.
Eu tenho um modelo chamado Cakes.cs porque o cliente vende bolos. Bem simples. Aqui está o código para esse modelo:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace TastyCakes.Models
{
public class Cakes
{
public int CakesID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public decimal Price { get; set; }
public string CakeImage
{
get { return Name.Replace(" ", string.Empty) + ".jpg"; }
}
}
}
Como você pode ver, estou usando uma propriedade calculada para criar um nome de imagem para cada bolo. Eu só preciso de 1 imagem para cada bolo. Agora, quando vou para Editar um bolo nas minhas páginas CRUD. Gostaria de adicionar um upload de imagem simples que fará upload de uma imagem (não há necessidade de redimensionar ou miniaturas), mas gostaria de impor o nome calculado da propriedade. Em outras palavras: não importa como o usuário nomeou sua foto, meu código de upload o renomeará para qualquer que seja o Cakes.Name (exceto quaisquer espaços) + ". Jpg" e salve-o em "~ Images / Cakes".
Estou exigindo apenas que o upload esteja na página de edição real, portanto o bolo já terá sido criado neste momento. Todas as informações necessárias para renomear o arquivo devem estar disponíveis e fáceis de utilizar na página Editar. Abaixo está o meu código de página Editar:
Editar Página:
@model TastyCakes.Models.Cakes
<div class="row">
<div class="large-12 columns">
<hgroup class="title">
<h1>Edit Cakes</h1>
</hgroup>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<hr />
@Html.ValidationSummary(true)
@Html.HiddenFor(model => model.CakesID)
<div class="medium-12 column">
@Html.LabelFor(model => model.Name)
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
<div class="medium-12 column">
@Html.LabelFor(model => model.Description)
@Html.EditorFor(model => model.Description)
@Html.ValidationMessageFor(model => model.Description)
</div>
<div class="medium-12 column">
@Html.LabelFor(model => model.Price)
@Html.EditorFor(model => model.Price)
@Html.ValidationMessageFor(model => model.Price)
</div>
<div class="medium-12 column">
<input type="submit" value="Save" class="tiny button" />
@Html.ActionLink("Back to List", "Index", null, new { @class = "tiny button" })
</div>
</div>
}
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
</div>
</div>
Analisei algumas soluções html5 e ASP.Net 4, mas isso é demais. O que eu quero é muito simples. Qualquer idéia ou um chute na direção certa seria muito apreciada. Estou usando esse código não apenas para um site de clientes, mas para incluí-lo em um site fictício usado para ensinar conceitos muito básicos de MVC.