I need to create a select list, preserving the state, which is not part of the model passed to the view. I suppose I should be using a ViewBag to pass a List to the View ? Any advise on implementation and how to preserve the state of the select list (how do I pass the selected value back to action and to the view again (possible ways of doing this) ?
The Action as of now:
public ActionResult Images(string x, string y)
{
//some code
ContentPage cp = this.ContentPage;
return View(cp);
}
//Post to action with same name:
[HttpPost]
public ActionResult Images(string someParameter)
{
ContentPage cp = this.ContentPage;
return View(cp);
}
The view as of now :
@model ContentPage
@{
ViewBag.Title = "Images";
CmsBaseController controller = (this.ViewContext.Controller as CmsBaseController);
}
@using (Html.BeginForm())
{
<div>
//This should go to List<SelectListItem> as I understand
<select name="perpage" id="perpage" onchange='submit();'>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</div>
}
Thank you!!!
Have you taken a look at this SO question? The answer there looks like it would do the trick if you wanted to use ViewBag/ViewData to pass in that list.
That said, why not just create a quick viewmodel and store it there? It really is a simple way to go.
I don't know what your ContentPage model is but you could certainly make a ContentPageViewModel that has whatever stuff (including the values for the select list) that is necessary for the page.
Example:
It would easy enough, for example, to have a property on the viewmodel to hold the selection and a property that holds some enumeration of possible values. Something like this:
where Choice, in my example, is a class that has two properties, one that holds some identifier and the other the text to display. Something like this:
And then you could just have, perhaps, a
DropDownListFor
which handles the display/selection work for you. Something like this:Back in your controller's action, the viewmodel's
SelectedId
will get populated with the corresponding Id for the Choice picked view the dropdown.