如何在mvc视图中从SelectList获取datavaluefield

时间:2017-11-22 15:24:12

标签: html asp.net-mvc

我在mvc controller

中绑定了selectlist中的数据

这是我的代码

var getYear = db.yearMaster.OrderBy(y => y.Year).ToList();
SelectList yearList = new SelectList(getYear, "YearID", "Year");
ViewBag.YearListName = yearList;

这是我的观点

@using (Html.BeginForm("FilterImage", "Glimpses", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    @Html.DropDownList("YearList", ViewBag.YearListName as SelectList, "Select Year")
}

现在,当我从FormMethod.Post方法提交数据时,我想传递与所选项目相关的datavaluefield。

让我们更清楚,

年份中有3项为ex:

value itemname
1     2011-2012
2     2012-2013
3     2013-2014    

现在,当我选择当时的2011-2012时,我想要那个值,即1.我希望将该值存储在@Html.Hidden();类型中。

谢谢。

1 个答案:

答案 0 :(得分:0)

您的代码将呈现一个SELECT name属性值设置为YearList的SELECT元素。这意味着当您提交表单时,所选的选项值将可用于表单项键YearList。因此,如果您在操作方法中使用具有相同名称的参数,您将获得该值。

[HttpPost]
public ActionResult FilterImage(int yearList)
{
    // You have the value in yearList param now
    // to do  : return something
}
  

现在,当我选择当时的2011-2012时,我想要的是那个值,即1。   我想将该值存储在@ Html.Hidden()中;输入

这没有任何意义。 @Html.Hidden()是一种渲染隐藏输入元素的辅助方法。你调用一个方法获取某些东西,你不能将某些值存储到方法中!

如果您尝试将下拉列表的选定值设置为隐藏元素,则应使用javascript执行此操作。以下是使用jQuery val()方法的示例。

$(function(){

   $("#YearList").change(function(){

       $("#yearID").val($(this).val());
       alert("The value of yearID input is "+  $("#yearID").val());
   }); 

});

此代码会将所选选项值设置为页面中ID为yearID的输入元素。