Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC4 DropDownList for-显示正确的结果_C#_Asp.net Mvc_Asp.net Mvc 4_Razor_Html Helper - Fatal编程技术网

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,这是使用
视图包的问题。检查我的更新,我已经把它都放在一个模型中了:)好的,现在它完全不同了:)在我有字符串类别之前。我会查出来的,谢谢