<select>
Razor ビューに要素があります。言語値を含むドロップ ボックスとして表示されます。カスタム Cookie とカスタム Cookie 対応ビュー エンジンを介して言語を設定します。
私がクッキーセット(と呼ばれるlanguage
)を持っているとしましょう。<option>
Cookie の値に基づいて、対応するマークが選択された状態でビューをレンダリングしたいと考えています。Razor でどのように制御できますか?
<select>
Razor ビューに要素があります。言語値を含むドロップ ボックスとして表示されます。カスタム Cookie とカスタム Cookie 対応ビュー エンジンを介して言語を設定します。
私がクッキーセット(と呼ばれるlanguage
)を持っているとしましょう。<option>
Cookie の値に基づいて、対応するマークが選択された状態でビューをレンダリングしたいと考えています。Razor でどのように制御できますか?
まあ、強く型付けされた部分ビューに選択を入れます:
@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);
これにより、実際の選択リストの表示から、どの言語を選択するかのロジックが保持されます。また、頻繁に使用される場合は、そのすべてのロジックを共有メソッドに入れることができます。