Marcelo,
Obrigada. Porém, ainda assim, não funcionou.
Retirei o ValidateAntiForgeryToken dos métodos Visualiza, Form e Index, e mantive apenas no método Adiciona, pois este método insere no banco de dados.
Mesmo assim, recebo erro no Adiciona. (url: http://localhost:51270/produtos/4)
Mensagem de erro:
-Erro de Servidor no Aplicativo '/'.
The required anti-forgery form field "__RequestVerificationToken" is not present.
Descrição: Ocorreu uma exceção sem tratamento durante a execução da atual solicitação da Web. Examine o rastreamento de pilha para obter mais informações sobre o erro e onde foi originado no código.
Detalhes da Exceção: System.Web.Mvc.HttpAntiForgeryException: The required anti-forgery form field "__RequestVerificationToken" is not present.
Erro de Origem:
Exceção sem tratamento foi gerada durante a execução da atual solicitação da Web. As informações relacionadas à origem e ao local da exceção podem ser identificadas usando-se o rastreamento de pilha de exceção abaixo.
Segue o meu código:
View:
<form action="/Produto/Adiciona" method="post">
@Html.AntiForgeryToken()
@Html.ValidationMessage("produto.InformaticaComPrecoInvalido")
<label for="nome">Nome:</label>
<input id="nome" name="produto.Nome" value="@ViewBag.Produto.Nome" class="form-control"/>
@Html.ValidationMessage("produto.Nome")
<label for="preco">Preço:</label>
<input id="preco" name="produto.Preco" value="@ViewBag.Produto.Preco" class="form-control"/>
@Html.ValidationMessage("produto.Preco")
<label for="quantidade">Quantidade:</label>
<input id="quantidade" name="produto.Quantidade" value="@ViewBag.Produto.Quantidade" class="form-control"/>
<label for="descricao">Descrição:</label>
<input id="descricao" name="produto.Descricao" value="@ViewBag.Produto.Descricao" class="form-control"/>
<label for="categoria">Categoria:</label>
<select id="categoria" name="produto.CategoriaId" class="form-control" >
@foreach (var categoria in ViewBag.Categorias)
{
<option value="@categoria.Id" selected="@categoria.Id.Equals(ViewBag.Produto.CategoriaId)">
@categoria.Nome
</option>
}
</select>
<input type="submit" />
<p>@Html.ActionLink("Voltar para Produto", "Index", "Produto")</p>
</form>
Código: ProdutoController :
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Adiciona(Produto produto)
{
// implementação da action
//ProdutosDAO dao = new ProdutosDAO();
//dao.Adiciona(produto);
//return View();
int idDaInformatica = 1;
if (produto.CategoriaId.Equals(idDaInformatica) && produto.Preco < 100)
{
ModelState.AddModelError("produto.InformaticaComPrecoInvalido", "Produtos da categoria informática devem ter preço maior do que 100");
}
if (ModelState.IsValid)
{
ProdutosDAO dao = new ProdutosDAO();
dao.Adiciona(produto);
return RedirectToAction("Index");
}
else
{
CategoriasDAO categoriasDAO = new CategoriasDAO();
ViewBag.Categorias = categoriasDAO.Lista();
return View("Form");
}
}