C# ASP .NET Web API 在 HTML 表单中创建枚举下拉列表
C# ASP .NET Web API 在 HTML 表单中创建枚举下拉列表
我在这个问题上遇到了很多问题。希望有人能帮忙。在回答之前,请记住我已经搜索过了,并且已经找到了很多关于这个问题的主题。
目前,我正在尝试使用典型的POST请求填充一个HTML表单(这是我第一次这样做,我通常是一个很好的程序员,但是由于ASP.NET Web API中的奇怪习惯,这个网络服务的东西让我烦恼。)我的下拉列表应该包含以下枚举作为可选择的值:
public enum FuelTypes { Gasoline = 0, Diesel = 1 };
是的,我确保在调用控制器中的View时传入了我的模型实例。
这行代码在“调试”模式下一直中断,就在这里的HTML代码中(您可以看到我已经注释掉了它以便更清楚地显示):
@Html.DropDownListFor(model => model.FuelId, Model.FuelTypesList, "--Fuel Type--")
所以这次肯定还有其他问题。请看一下我在C#和HTML中的相关代码:
附注:如果有其他改进的提示会很好!我对此还不太熟悉。但是我需要能够填充和显示下拉列表的值。然后我必须从包含所有被POST的数据的HttpWrapper对象创建相关对象。
提前感谢!
我的模型:
public class FuelModel { public FuelModel() { FuelTypesList = new List(); } [Display(Name = "FuelType")] public int FuelId { get; set; } public IEnumerable FuelTypesList { get; set; } }
我的控制器:
public class ActionController : Controller { // POST: Action [HttpPost] [ActionName("FuelType")] public ActionResult Index(FuelModel Model) { Model = new FuelModel(); // 这是引用“FuelType”枚举以后从HTML表单中访问值的地方。 IEnumerableFuelType = Enum.GetValues(typeof(FuelTypes)).Cast (); Model.FuelTypesList = from action in FuelType select new SelectListItem { Text = action.ToString(), Value = ((int)action).ToString() }; return View(Model); } }
我的视图(包含HTML / JavaScript):
问题出现的原因是需要在HTML表单中创建一个枚举下拉列表,但是没有找到相应的解决方法。解决方法是使用C# ASP .NET Web API中的代码来创建枚举下拉列表,具体的代码如下:
Html.DropDownListFor(o => o.EnumProperty, Enum.GetValues(typeof(enumtype)).Cast().Select(x => new SelectListItem { Text = x.ToString(), Value = ((int)x).ToString() }))
在这里找到了这个解决方法:https://stackoverflow.com/a/2416623/7349807