0

<select>Razor ビューに要素があります。言語値を含むドロップ ボックスとして表示されます。カスタム Cookie とカスタム Cookie 対応ビュー エンジンを介して言語を設定します。

私がクッキーセット(と呼ばれるlanguage)を持っているとしましょう。<option>Cookie の値に基づいて、対応するマークが選択された状態でビューをレンダリングしたいと考えています。Razor でどのように制御できますか?

4

1 に答える 1

1

まあ、強く型付けされた部分ビューに選択を入れます:

@inherits System.Web.Mvc.WebViewPage<Language>
@Html.DropDownListFor(x => x,
                    new SelectList((List<Language>)ViewBag.AllLanguages,
                    "Id",
                    "Text",
                    Model==null?-1:Model.Id), "Choose Language")

実際にコントローラーに値を設定します

public virtual ActionResult _MyAction()
{
    // get users language
    string selectedLanguage = "English"; // default
    if(Request.Cookies["language"] != null)
    {
        selectedLanguage = Request.Cookies["lang"].ToString();
    }

    // language list
    ViewBag.AllLanguages = context.Languages.ToList();

    // retrieve language from database - example using EF
    ViewBag.SelectedLanguage = context.Languages
                                      .FirstOrDefault(l=>l.Text==selectedLanguage);

そして、私のメインビューで

@Html.Partial("LanguageSelect", ViewBag.SelectedLanguage);

これにより、実際の選択リストの表示から、どの言語を選択するかのロジックが保持されます。また、頻繁に使用される場合は、そのすべてのロジックを共有メソッドに入れることができます。

于 2012-04-16T20:43:15.657 に答える