Specify DropDownList options in MVC 3 Razor - asp.net-mvc

I'd like to know if it is possible to assign a default value for a Dropdownlist while restricting User to select that default value from its option list.
Example :
#Html.DropDownListFor(m => m.Something, new SelectList(Model.TheList), "--DefaultValue--", new { name="SomethingName", id="SomethingID", style="width:150px;"})
Let's suppose TheList contains {"1","2","3"}.
When User clicks the DropDownList, he will find "--DefaultValue--" displayed as initial value, and also find it as one of the options available to be selected.
Is it possible only to have 1,2, and 3 alone as the options without "--DefaultValue--" ?

The only way is to set selected value in DropDown. --Default value-- represents null in selected value

Try this:
#Html.DropDownListFor(m => m.Something, new SelectList(Model.TheList),new { name="SomethingName", id="SomethingID", style="width:150px;"})

Related

How to set the value of a dropdownlist in mvc without allowing the user to change it

i'm very new to MVC and I want to know if this is possible. I want the JobID to be set to a value that i have in the ViewBag. I want to remove the DropdownList so that the value is automatically assigned without having the user to select the value from the List.
Create Task Controller
Create Task View
Website View
If you look at image 3. I want to remove this dropdownlist and have that value already assigned. Any help will be appreciated thank you.
Disable the dropdownlist for user as below,
Html.DropDownList("JobID", Model.JobID, new {#class = "form-control", #disabled = "disabled" })

How to add an Option label on ListBoxFor HTML Helper in ASP.Net MVC

How can I add an option label like the one existent on the DropDownListFor for a ListBoxFor HTML Helper ?
I have the code similar to bellow:
<%= Html.ListBoxFor( m => m.SelectedElements, new MultiSelectList(Model.AllPossibleElements, "ID", "Text")) %>
And the image bellow is the output:
I would like to have a default selection (option label) like: "Please, select the value".
The reason that Html.DropDownListFor() has an "option" parameter is that dropdown lists, when they don't have a selected value, are blank and you can't see their contents without expanding them.
Listboxes, typically do display their contents, and thus an option is not necessary. An unselected listbox doesn't need something to say "Select an option" because the options are clearly visible.
I think your problem here is that you're using a third party library to re-style a listbox to look like a dropdownlist, and thus it's not behaving the way you would expect a dropdownlist to behave (because it's not a dropdownlist, it's a listbox that just looks like dropdownlist).
The Listboxfor helper doesn't provide this, because it doesn't typically make sense to provide it. All that the option is doing is creating an entry that is first in the list that has an empty value. Thus, when the form is submitted, the empty value will trigger any required validation you may have on the backing property.
So, to do this yourself, you need to add an empty item with just the text you want, and an empty value.
You can do #Html.LabelFor(x => x.ListBoxName, "Your Label");
Where ListBoxName is the name of your ListBox in your ViewModel.
Update:
Sorry, I thought you wanted an HTML label. What you're looking for is a placeholder.
<%= Html.ListBoxFor( m => m.SelectedElements, new MultiSelectList(Model.AllPossibleElements, "ID", "Text"), new { #placeholder = "Your Label" }) %>
Note: This doesn't actually create an 'option' inside the ListBox. So, there might be compatibility issues with older browsers.

Kendo-UI DropDownListFor - selected index

I need to change standard dropdown list to the one from kendo and and I've got a problem with getting appropriate selected value.
This code gives me a dropdown list with correct values, but doesn't give selected value (first one is selected).
#(Html.Kendo().DropDownListFor(m => m.CountryName)
.BindTo(Model.AllCountries)
.OptionLabel("-- Select country --")
)
Inside span (generated by kendo) with this dropdown I found input (type = text) with all values as options, and this input has correct value.
How to display this value in my kendo dropdown?
Thanks
Have you tried setting the name of the DropDownList equal to the name of the property in your model? The Kendo Documentation suggests that "if widget's name is different than the Model's property then the ModelBinder will not be able to update the model."

DropDownListFor Not Displaying/Persisting Null for First Choice in List

I have an MVC app via SharpArch. In the view I have:
Html.DropDownListFor(x => x.Location,
new SelectList(Model.PossibleLocations, "Id", "Address"),
"-- No Location --")
I have 2 issues.
The Dropdown is not getting updated when the view gets bound to the model.
A selection gets persisted correctly except when I try the top "no location".
I was able to take care of the first point by changing x.Location to x.Location.Id but then I had other issues.
I can find plenty of examples for DropDownList, but none in which saving a null is shown.
Any help is appreciated.
Thanks
UPDATE:
I just upgraded Resharper (a minor update) and am getting prompted to fill it DropDownListFor. Why would that make a difference? It was working enough to bind and now it doesn't work at all.
You could always insert the "empty" SelectListItem into your PossibleLocations collection before passing to the View and check for that "empty" value (0 for instance) when the form is posted
model.PossibleLocations.Insert(0,
new SelectListItem() { Text = "-- No Location --", Value = "0" };
Try "flattening" your model class so that LocationId is the actual value you're binding to (i.e. add a "LocationId" property to your model, and create a DropDownList for x => x.LocationId).

ASP.NET MVC 2 Editor Templates

The following link explains editor templates: http://weblogs.asp.net/scottgu/archive/2009/07/31/asp-net-mvc-v2-preview-1-released.aspx
What I want to know is if I have a editor template for a drop down, how is the initial value set?
I have a drop down and I use the Html.EditorFor(c => c.Country, "CountryDropDown")
But it always defaults to the first selected item in the list... any ideas?
I would think, you need to create a viewdata, or create a viewmodel to include the select list passing to the dropdown list. For example, in your controller action, you should do sth like this:
//get your item for editing here i.e named itemToEdit
//get your country collection here
ArrayList countryList=New ArrayList;
foreach (Country c In YourCountryCollection)
{ countryList.Add(New With {.Item = c.CountryName, .value = c.CountryID})
}
Viewdata("CountryList")=New SelectList(countryList, "Value", "Item", itemToEdit.countryID)}
Now in your view, instead of using html.editorfor, you should uuse the following:
Html.Editor("CountryLis", "CountryDropDown")
This should set your dropdownlist with the selected value.
Hope this help.

Resources