asp.net-mvc – MVC 3 – 脚手架下拉列表
|
我正在玩 Asp.net mvc中的Scaffolding 我的国家视图模型中有一个属性 public IEnumerable<SelectListItem> Countries { get; set; }
然而,当我创建一个视图并指定viewmodel时,它并没有像我预期的那样支持一个下拉列表.实际上它完全被忽略了. 我在编写之前编译了该项目 我也试过添加这样的属性 public int CountryId { get; set; }
正如本文所说,有一项公约在起作用 http://blog.stevensanderson.com/2011/01/28/mvcscaffolding-one-to-many-relationships/ 我正在使用右键单击控制器操作方法时的“添加”视图选项 有什么想法有什么不对? 解决方法在我目前的项目中,我遇到了这个问题,并且找不到一种快速的方法来支持我的一个实体内的一对多关系的下拉列表.我最终做的是如下: 1-创建正常的AddView =>创建方式. 2-如果我在我的模型类中有一个ID属性,则defaul; t模板将生成类似这样的内容以在我的视图中表示此属性: <div class="editor-label">
@Html.LabelFor(model => model.CityID)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.CityID)
@Html.ValidationMessageFor(model => model.CityID)
</div>
3-现在我需要用一个工作的模板替换这个默认模板,所以我在CREATE方法中编写了这段代码: IEnumerable<SelectListItem> cityItems = dataContext.Cities.AsEnumerable().Select(c => new SelectListItem()
{
Text = c.Name,Value = c.ID.ToString(),Selected = false,});
SelectList cityList = new SelectList(cityItems,"Value","Text");
ViewBag.CityList = cityList;
这将获取Cities表并创建一个Selectlist,我可以将其传递给我的视图并使用它来为DrobDown提供它的项目. 4-将我的视图中的默认代码替换为如下所示: <div class="Post-label">
<div class="editor-label">
@Html.LabelFor(model => model.CityID)
</div>
<div class="editor-field">
@Html.DropDownListFor(m => m.CityID,ViewData["CityList"] as SelectList)
@Html.ValidationMessageFor(model => model.CityID)
</div>
</div>
我使用ViewData [“CityList”]而不是ViewBag.CityList的原因是这个有效,但另一个没有. 5-现在我的视图正在查找并且正在按照我的预期获取City数据,并且在我的Edit视图中使用相同的模型也导致了一个工作. 试一试,让我知道发生了什么,谢谢. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET MVC输出缓存为多应用程序,因主机名和文化而异
- asp.net-mvc – 在Html.ActionLink(MVC 4)中使用Html.Displ
- asp-classic – 检查VBScript中是否存在Object
- asp.net-mvc – 在ASP.NET MVC中在HTTP和HTTPS之间移动
- asp.net核心 – ASP – 启动时核心迁移EF核心SQL DB
- asp.net-mvc – Html.DisplayFor不发布值到控制器在ASP.NET
- 如何格式化带有class参数的asp.net webmethod的JSON
- 双应用程序域在ASP.NET 4应用程序
- asp.net-mvc – MVC 5 HttpErrors控制器/动作
- 本地化 – 如何在asp.net mvc中获取客户端区域设置?
