Chr*_*sCa 8 asp.net-mvc scaffolding asp.net-mvc-3
我正在玩Asp.net mvc中的Scaffolding
我的国家视图模型中有一个属性
public IEnumerable<SelectListItem> Countries { get; set; }
Run Code Online (Sandbox Code Playgroud)
然而,当我创建一个视图并指定viewmodel时,它并没有像我预期的那样支持下拉列表.实际上它完全被忽略了.
我之前编译了项目
我也试过添加这样的属性
public int CountryId { get; set; }
Run Code Online (Sandbox Code Playgroud)
正如本文所说,有一项公约在起作用
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>
Run Code Online (Sandbox Code Playgroud)
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;
Run Code Online (Sandbox Code Playgroud)
这将获取Cities表并创建一个Selectlist,我可以将其传递给我的视图并使用它来为DrobDown提供它的项目.
4-替换我的View中的默认代码,如下所示:
<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>
Run Code Online (Sandbox Code Playgroud)
我用它ViewData["CityList"]
代替的原因ViewBag.CityList
是这个有效但另一个没有.
5-现在我的视图正在查找并且正在获取City
数据,就像我期望的那样,并且在我的Edit
视图中使用相同的模型也导致了工作.
试一试,让我知道发生了什么,谢谢.
归档时间: |
|
查看次数: |
5997 次 |
最近记录: |