Pergunta

Se sim, como devo passar no parâmetro? Uma string correspondia ao nome da enum seria OK? Isso seria útil se eu estivesse passando por uma caixa suspensa que correspondesse aos itens enumerados.

Seria útil usar uma solução apresentada em esta resposta Se eu pudesse vincular com facilidade a enumeração quando enviar os dados de volta.

Foi útil?

Solução

Sim, ao ter um controlador como:

enum MyAction { Lalala }

public ActionResult Index(MyAction action) { ... }

Você pode simplesmente fazer Index/Lalala, e tudo funciona bem.

Se você precisar de uma ligação mais complexa (como mapear um determinado valor da string para uma classe complexa), use algo como StructureMap.

Outras dicas

Fica ainda melhor que você também pode passar Enum como obtenha o parâmetro

@Html.ActionLink("Email Quote", "UnitDetails", "Journey", new { product = product.ProductTitle, button = "email" }, new { @class = "btn btn--main btn--main-orange" })

Isso acaba seguindo o URL: http://localhost:50766/UnitDetails?product=Your%20quote&button=email

Método de ação que aceita se parece com o seguinte:

    [SessionTimeout]
    public ActionResult UnitDetails(QuoteViewModel viewModel)

QuoteViewModel e Enum:

public class QuoteViewModel : IQuoteViewModel
{
    public QuoteViewModelProducts Products { get; set; }

    public bool HasDiscount { get; set; }

    public string Product { get; set; }

    public DetailButtonType Button { get; set; }
}

public enum DetailButtonType
{
    Buy,
    Callback,
    Email
}

O que eu mais amo é que, mesmo se você passar o parâmetro e o valor da enum como minúsculas, ele mapeia corretamente a propriedade e o valor em alta, o que torna meu sorriso profusamente.

enter image description here

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top