2

コントローラーには次のものがあります。

string preferredLanguage = "fr-ca";
ViewData["Languages"] = new SelectList(languages, "Code", "Name", preferredLanguage);

ビューで:

@Html.DropDownList("Languages", (SelectList)ViewData["Languages"], new { id = "Languages" });

ここで私の問題は、私のドロップダウンが、選択したドロップダウンのインデックスを、フランス語であるはずの優先言語に設定していないことです。

ノート:

内の値languages:

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

2) Name = "French"
   Code = "fr-ca"

ドロップダウンには、英語とフランス語の 2 つの言語が表示されます。英語が選択インデックスとして設定されていますが、私が欲しいのはフランス語です。

この方法を示した理由は、languagesこのオブジェクトがハードコーディングされた方法ではなく、データベースから取得されているためです。前もって感謝します!

4

3 に答える 3

1

モデルにバインドされた厳密に型指定されたヘルパーを使用することをお勧めします。これらの行に沿って何か:

モデル:

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.

于 2013-08-08T07:40:56.143 に答える
0

これは私にとってはうまくいきます。

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

ビューで

@Html.DropDownList("Language", ViewData["Languages"] as SelectList, new { id = "Languages" })
于 2013-08-08T07:05:34.050 に答える
0

これで結構です:

@Html.DropDownList("languages")
于 2013-08-08T08:07:06.063 に答える