Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.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

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# mvc下拉列表不显示所选索引_C#_Asp.net Mvc - Fatal编程技术网

C# mvc下拉列表不显示所选索引

C# mvc下拉列表不显示所选索引,c#,asp.net-mvc,C#,Asp.net Mvc,我的控制器上有以下各项: string preferredLanguage = "fr-ca"; ViewData["Languages"] = new SelectList(languages, "Code", "Name", preferredLanguage); 关于这一观点: @Html.DropDownList("Languages", (SelectList)ViewData["Languages"], new { id = "Languages" }); 我的问题是,我的下拉列

我的控制器上有以下各项:

string preferredLanguage = "fr-ca";
ViewData["Languages"] = new SelectList(languages, "Code", "Name", preferredLanguage);
关于这一观点:

@Html.DropDownList("Languages", (SelectList)ViewData["Languages"], new { id = "Languages" });
我的问题是,我的下拉列表没有将所选的下拉列表索引设置为首选语言,即法语

注:

语言中的值

1) Name = "English"
   Code = "en-us"

2) Name = "French"
   Code = "fr-ca"
下拉列表显示两种语言,英语和法语。英语被设置为选定的索引,但我想要的是法语


我之所以以这种方式显示
语言
,是因为此对象是通过我的方法从数据库中检索的,而不是通过硬编码。提前谢谢

这对我来说很有效

Dictionary<string, string> languages = new Dictionary<string, string>() { { "en-us", "English" }, { "fr-ca", "French" } };
ViewData["Languages"] = new SelectList(languages, "key", "value", "fr-ca");

我建议使用绑定到模型的强类型助手;大致如下:

型号:

public class LanguageFormModel
{
    public string SelectedLanguage { get; set; }

    public SelectList Languages { get; set; }
}
[HttpGet]
public ActionResult YourActionName()
{
    // replace this with however you're getting your language variable
    var languages = new CollectionOfSomeSort();

    var model = new LanguageFormModel()
    {
        SelectedLanguage = "fr-ca",
        Languages = new SelectList(languages, "Code", "Name", "fr-ca")
    };

    return View(model);
}
@model Your.Fully.Qualified.Namespace.LanguageFormModel

@Html.LabelFor(m => m.SelectedLanguage)
@Html.DropDownListFor(m => m.SelectedLanguage, Model.Languages, "Select one...")
行动:

public class LanguageFormModel
{
    public string SelectedLanguage { get; set; }

    public SelectList Languages { get; set; }
}
[HttpGet]
public ActionResult YourActionName()
{
    // replace this with however you're getting your language variable
    var languages = new CollectionOfSomeSort();

    var model = new LanguageFormModel()
    {
        SelectedLanguage = "fr-ca",
        Languages = new SelectList(languages, "Code", "Name", "fr-ca")
    };

    return View(model);
}
@model Your.Fully.Qualified.Namespace.LanguageFormModel

@Html.LabelFor(m => m.SelectedLanguage)
@Html.DropDownListFor(m => m.SelectedLanguage, Model.Languages, "Select one...")
查看:

public class LanguageFormModel
{
    public string SelectedLanguage { get; set; }

    public SelectList Languages { get; set; }
}
[HttpGet]
public ActionResult YourActionName()
{
    // replace this with however you're getting your language variable
    var languages = new CollectionOfSomeSort();

    var model = new LanguageFormModel()
    {
        SelectedLanguage = "fr-ca",
        Languages = new SelectList(languages, "Code", "Name", "fr-ca")
    };

    return View(model);
}
@model Your.Fully.Qualified.Namespace.LanguageFormModel

@Html.LabelFor(m => m.SelectedLanguage)
@Html.DropDownListFor(m => m.SelectedLanguage, Model.Languages, "Select one...")
我个人不太喜欢使用
ViewData
来处理简单的消息以外的任何事情,即使这样,我也会使用
TempData
,因为我主要只是显示确认/警报。

这没问题:

@Html.DropDownList("languages")

谢谢,但我现在正在使用第一个。请参阅我的代码更新。谢谢这很奇怪。我更新了我的代码,我们现在有相同的,但我的不工作。可能遗漏了什么。我的视图中已经有一个强类型对象,它不包括语言列表,只包括他想要的语言。但这帮我解决了我的问题,做了最后一行你的看法。谢谢