Domanda

in caso affermativo, come devo passare il parametro? sarebbe una stringa corrispondente al nome enum essere ok? Questo sarebbe utile se stavo passando una casella a discesa che ha trovato gli elementi enumerati.

Sarebbe utile utilizzare una soluzione presentata in questa risposta se potessi altrettanto facilmente legarsi al enum quando presento la parte posteriore dei dati.

È stato utile?

Soluzione

Sì, quando si ha un controller come:

enum MyAction { Lalala }

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

Si può solo fare Index/Lalala, e tutto funziona bene.

Se avete bisogno di più complesso vincolante (come la mappatura di un certo valore stringa in un complesso di classe), uso qualcosa come StructureMap .

Altri suggerimenti

E 'ancora meglio si può anche passare Enum come get parametro

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

che finisce seguente url: http://localhost:50766/UnitDetails?product=Your%20quote&button=email

Il metodo d'azione che accetta assomiglia a questo:

    [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
}

Quello che mi piace di più è anche se si passa enum parametro e il valore come minuscole si associa correttamente alla proprietà maiuscole e valore, il che rende il mio ghigno copiosamente.

entrare descrizione dell'immagine qui

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top