gpt4 book ai didi

asp.net-mvc - MVC 3 - 脚手架下拉列表

转载 作者:行者123 更新时间:2023-12-01 22:57:35 25 4
gpt4 key购买 nike

我正在玩 Asp.net mvc 中的脚手架

我的 View 模型上有一个国家/地区的属性

public IEnumerable<SelectListItem> Countries { get; set; }

然而,当我创建一个 View 并指定 View 模型时,它并没有像我预期的那样构建下拉列表。事实上,它被完全忽略了。

我在做之前已经编译了项目

我也尝试添加这样的属性
public int CountryId { get; set; }

正如这篇文章所暗示的,有一个约定在起作用

http://blog.stevensanderson.com/2011/01/28/mvcscaffolding-one-to-many-relationships/

我正在使用右键单击 Controller 操作方法时的添加 View 选项

任何想法有什么问题?

最佳答案

在我当前的项目中,我遇到了这个问题,但找不到一种快速的方法来搭建我的一个实体中一对多关系的下拉列表。

我最终做的是如下:

1- 创建正常的 AddView=>Create 方式。

2- 如果我的模型类中有一个 ID 属性,则默认模板将生成如下内容以在我的 View 中表示此属性:

<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,我可以将它传递给我的 View 并使用它为 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>

我使用的原因 ViewData["CityList"]而不是 ViewBag.CityList是这个有效,但另一个无效。

5- 现在我的 View 正在查找并获取 City数据就像我预期的那样,并在我的 Edit 中使用相同的模型 View 也产生了一个工作。

试一试,让我知道发生了什么,谢谢。

关于asp.net-mvc - MVC 3 - 脚手架下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5693017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com