Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Atualizar Base com JQuery

Pessoal,

Não estou conseguindo atualizar o campo Quantidade com este código, e não entendo porque não funciona.

```

@foreach (var produto in Model) { @produto.Id@Html.RouteLink(produto.Nome, "VisualizaProduto", new { id = produto.Id })@produto.QuantidadeDecremetar }

```

Podem me ajudar ?

3 respostas

Achei o problema, mas não faz sentido pra mim..

O método Url.Action() retorna uma string, por isso, eu não estava colocando ele entre aspas duplas, e isto estava causando o erro. Alguém tem alguma explicalção ?

solução!

Olá Rafael,

Por mais que o retorno seja do tipo String, a chamada para um método ou propriedade estará imprimindo no html gerado a partir do cshtml. Por exemplo, se você coloca esse campo na tabela:

<td>@produto.Nome</td>

Por mais que o nome seja uma string, você gostaria que o Razor escrevesse na página que vai para o usuário o nome de todos os produtos na sua página com aspas duplas envolta? Chuto que provavelmente não vai ser interessante ter esse comportamento. Por isso que o Razor só escreve o texto puro, sem aspas nem nada.

Só que no javascript, como a URL precisa ser uma string, por isso que precisamos colocar as "" na Url.Action. Se não, caso você deixe apenas

var url = @Url.Action("DecrementaQtd", "Produto");

a página gerada ficaria assim

var url = /Produto/DecrementaQtd;

Que pro js não é nenhum tipo de valor que ele reconhece, por isso do erro. Agora fazendo assim:

var url = "@Url.Action("DecrementaQtd", "Produto")";

a página gerada fica certinha com a url como texto

var url = "/Produto/DecrementaQtd";

Lucas,

Muito obrigado pela explicação!