int ItemId { get; set; }Then I want every time an instance of this model type is being edited, the field is shown as a dropdownlist. To do this, inside 'EditorTemplates' folder under the global 'Views\Shared' or a view's specific folder, I create a partial view named 'Item.cshtml' like below:
@Html.DropDownListFor(model => ViewData.TemplateInfo.FormattedModelValue, ((IEnumerable<Model.Item>)ViewBag.Items).Select(option => new SelectListItem { Text = option.Type.Name, Value = option.ItemId.ToString(), Selected = (Model != null) && (option.ItemId == (int)ViewData.TemplateInfo.FormattedModelValue) }), "Please select")Note that, I use ViewData.TemplateInfo.FormattedModelValue to get the value. I could also write like this by declaring the model to use:
@model int @Html.DropDownListFor(model => model, ((IEnumerable<Model.Item>)ViewBag.Items).Select(option => new SelectListItem { Text = option.Type.Name, Value = option.ItemId.ToString(), Selected = option.ItemId == Model }), "Please select")Then to render the custom template on my edit view page, I do:
@Html.EditorFor(model => model.ItemId, "Item")
For more details about Editor Template or Display Template, you could see my previous post.
3 comments:
Hi, in the below code :
@model int
@Html.DropDownListFor(model => model, ((IEnumerable)ViewBag.Items).Select(option => new SelectListItem {
Text = option.Type.Name,
Value = option.ItemId.ToString(),
Selected = option.ItemId == Model
}), "Please select")
what is the Model ? in fact ((IEnumerable)
@model int
@Html.DropDownListFor(model => model, ((IEnumerable)ViewBag.Items).Select(option => new SelectListItem {
Text = option.Type.Name,
Value = option.ItemId.ToString(),
Selected = option.ItemId == Model
}), "Please select")
What is Model in (IEnumerable)?
hi,
The first '@model' on top is to declare a model/object passed to a view or template along with its type. Then after that, we can use 'Model' (capital M) to refer to the model/object instance.
Post a Comment