我正在使用MVC5,Razor,实体框架,C#。我试图使用链接传递一个dorpdown列表的值。
我的模特是
public class TestVM
{
public string TheID { get; set; }
}
我正在将一个枚举加载到IEnumberable中。我的枚举是
public enum DiscountENUM
{
SaleCustomer,
SaleCustomerCategory,
SaleProduct,
SaleProductCategory,
SaleCustomerAndProduct,
SaleCustomerAndProductCategory,
SaleCustomerCategoryAndProductCategory,
PurchaseVendor,
PurchaseVendorAndProduct,
PurchaseVendorAndProductCategory,
PurchaseProduct,
PurchaseProductCategory,
Unknown
}
我正在使用家庭控制器的索引方法
public ActionResult Index()
{
ViewBag.ListOfDiscounts = SelectListDiscountENUM();
TestVM d = new TestVM();
return View(d);
}
我使用
加载ListOfDiscountsprivate IEnumerable<SelectListItem> SelectListDiscountENUM()
{
List<SelectListItem> selectList = new List<SelectListItem>();
var listOfEnumValues = Enum.GetValues(typeof(DiscountENUM));
if (listOfEnumValues != null)
if (listOfEnumValues.Length > 0)
{
foreach (var item in listOfEnumValues)
{
SelectListItem sVM = new SelectListItem();
sVM.Value = item.ToString();
sVM.Text = Enum.GetName(typeof(DiscountENUM), item).ToString();
selectList.Add(sVM);
}
}
return selectList.OrderBy(x => x.Text).AsEnumerable();
}
我从视图中调用的create方法是
public ActionResult Create(TestVM d, string TheID)
{
return View();
}
我的索引视图是
@model ModelsClassLibrary.Models.DiscountNS.TestVM
<div>@Html.ActionLink("Create New", "Create", new { TheID = Model.TheID})</div>
<div>
@Html.DropDownListFor(x => x.TheID, @ViewBag.ListOfDiscounts as IEnumerable<SelectListItem>, "--- Select Discount Type ---", new { @class = "form-control" })
</div>
问题出在视图中的以下行
<div>@Html.ActionLink("Create New", "Create", **new { TheID = Model.TheID}**)</div>
我尝试添加一个名为field的模型作为“TheID”......没有运气。另外,在参数中添加了一个字符串字段,没有运气。我查看了FormControl对象,其中也没有任何内容!我怀疑必须在帮助程序的路由级添加一些东西,但我不知道是什么。
“Model.TheID”始终为null。即使我在DropDownListFor中选择一个项目。 有没有人知道如何捕获DropDownListFor的选择值并将其发送到Html.ActionLink“TheID”?