C# MVC4 DropDownList for-显示正确的结果
我有一个强类型的编辑视图,该模型有两个字段: 名称和类别。 名称只是一个字符串,类别是从下拉列表中选择的 我的控制器:C# MVC4 DropDownList for-显示正确的结果,c#,asp.net-mvc,asp.net-mvc-4,razor,html-helper,C#,Asp.net Mvc,Asp.net Mvc 4,Razor,Html Helper,我有一个强类型的编辑视图,该模型有两个字段: 名称和类别。 名称只是一个字符串,类别是从下拉列表中选择的 我的控制器: [HttpGet] public ActionResult EditAuthor(int id) { var db = new AuthorDatacontext(); var Author = db.Authors.Find(id); ViewBag.category =
[HttpGet]
public ActionResult EditAuthor(int id)
{
var db = new AuthorDatacontext();
var Author = db.Authors.Find(id);
ViewBag.category = new SelectList(new[] { "ScienceFiction", "fantasy", "LoveStory", "History" });
return View(Author);
}
我的看法是:
<div class="editor-label">
@Html.LabelFor(model => model.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.category)
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.category, (SelectList)ViewBag.category)
@Html.ValidationMessageFor(model => model.category)
</div>
@LabelFor(model=>model.Name)
@EditorFor(model=>model.Name)
@Html.ValidationMessageFor(model=>model.Name)
@LabelFor(model=>model.category)
@Html.DropDownListFor(model=>model.category,(SelectList)ViewBag.category)
@Html.ValidationMessageFor(model=>model.category)
现在,下拉列表只显示了我可以选择的所有选项,而不是已经选择的选项。
如何使它首先显示已显示的类别?我认为这可能是因为您没有设置
IsSelected
属性。请尝试以下方法:
首先,让我们制作一个视图模型,以便将下拉列表放在其中:
public class AuthorViewModel
{
public Author Author { get; set; }
public List<SelectListItem> Categories { get; set; }
}
然后你可以做:
@Html.DropDownListFor(model => model.Author.Category, Model.Categories)
我认为这可能是因为您没有设置
IsSelected
属性。请尝试以下方法:
首先,让我们制作一个视图模型,以便将下拉列表放在其中:
public class AuthorViewModel
{
public Author Author { get; set; }
public List<SelectListItem> Categories { get; set; }
}
然后你可以做:
@Html.DropDownListFor(model => model.Author.Category, Model.Categories)
您确定页面加载的
模型.category
属性中的内容是下拉列表中的内容吗?是的,因为我可以在详细信息页面中看到它,我从创建页面的下拉列表中选择它。您确定页面加载的模型.category
属性中的内容是下拉列表?是的,因为它是我可以在详细信息页面中看到的,我从创建页面的下拉列表中选择它。我不知道该将代码放在哪里。var选择应该在控制器中,但它没有model.category(可能您指的是author.category)。不管怎么说,问题是下拉菜单获取的是SelectList类型,而不是列表类型…@AlexandraOrlov将该代码放入控制器中,是的,你是对的,抱歉我将其更改为作者
。检查我的编辑,我也为你的视图添加了razor代码。你在视图中写的行的问题是它需要转换为特定类型。而且它不能被转换到(List)@AlexandraOrlov,这是使用视图包的问题。检查我的更新,我已经把它都放在一个模型中了:)好的,现在它完全不同了:)在我有字符串类别之前。我会查出来的,谢谢。我不知道该把代码放在哪里。var选择应该在控制器中,但它没有model.category(可能您指的是author.category)。不管怎么说,问题是下拉菜单获取的是SelectList类型,而不是列表类型…@AlexandraOrlov将该代码放入控制器中,是的,你是对的,抱歉我将其更改为作者
。检查我的编辑,我也为你的视图添加了razor代码。你在视图中写的行的问题是它需要转换为特定类型。而且它不能被转换到(List)@AlexandraOrlov,这是使用视图包的问题。检查我的更新,我已经把它都放在一个模型中了:)好的,现在它完全不同了:)在我有字符串类别之前。我会查出来的,谢谢