如果是这样,我应该如何传递参数?匹配枚举名称的字符串可以吗?如果我传递的是与枚举项匹配的下拉框,这将非常方便。
如果我能够在提交数据时轻松绑定到枚举,那么使用this answer中提供的解决方案会很有用。
答案 0 :(得分:15)
是的,当有一个控制器时:
enum MyAction { Lalala }
public ActionResult Index(MyAction action) { ... }
你可以做Index/Lalala
,一切正常。
如果您需要更复杂的绑定(例如将某个字符串值映射到复杂类),请使用类似StructureMap的内容。
答案 1 :(得分:3)
您可以将Enum
作为获取参数
@Html.ActionLink("Email Quote", "UnitDetails", "Journey", new { product = product.ProductTitle, button = "email" }, new { @class = "btn btn--main btn--main-orange" })
最终会跟随网址:http://localhost:50766/UnitDetails?product=Your%20quote&button=email
接受的动作方法如下所示:
[SessionTimeout]
public ActionResult UnitDetails(QuoteViewModel viewModel)
QuoteViewModel和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
}
我最喜欢的是即使你将enum参数和值传递为小写,它也正确地映射到大写属性和值,这使我的笑容很多。