开发者

Posting an array of HTML.DropDownList values to controller action method

So in my view I am dynamically creating dropdown lists in a for loop. I use the same name value in unique id values.

@foreach(var item in Model.Items)
{
   @Html.DropDownList("Items" Model.GenerateSelectList(item.id), new { id = item.id })
}

In my controller action method for the post I can get the values of the dropdowns like this:

[HttpPost]
[ValidateAntiForgeryToken]
[Authorize]
public ActionRe开发者_开发知识库sult ClassicLineup(IList<int> items)
{
}

I cannot figure out how to get BOTH the dropdown id and associated value.

Seems like it should be simple but it has me stumped...

Thanks.


On form submit browser sends only the selected value of a dropdown, so there is no bult in mechanism to read the text of selected item, but you can create one for you.

In below code i have created a hidden input which stores the text of current selected item, and is send to the server on form post.

You can create below list in controller or in view (preferred place in controller);

var items= (from item in Model.Items
                select new SelectListItem
                {
                    Value= item.DisplayProperty
                    Text= item.Value
                }).toList();


 <form  action="controller/test">

 @*This will create DD*@ 
 @Html.DropDownList("MyDropDownList", items)

 @*Hidden input*@ 
<input type="hidden" id="ddSelectedName" name="ddSelectedName" />

 <br>
     <input type="submit" value="submit"/>
   </form>

Include jQuery in ur code and then add this

<script type="text/javascript">
    $('#MyDropDownList').change(function () {
        $('#ddSelectedName').val($(this).find(':selected').text());
    });
</script>

Controller

public string test(string MyDropDownList, string ddSelectedName)
{
    return MyDropDownList+ "--"+ddSelectedName ;
}


I just ended up looping through the forms collection and parsing the dropdown id (form.key) and the dropdown value (form.key.value).

Apparently there is not an easy way to have MVC bind the dropdown values and id to a collection in the controller action parameter.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜