0
我在Razor视图上有<select>
元素。它呈现为具有语言值的下拉框。我通过自定义Cookie和一个自定义的Cookie识别视图引擎来设置语言。在Razor视图引擎中设置基于Cookie的html选择值的选定值
比方说,我有一个cookie集(称为language
)。我希望有一个视图呈现,其中相应的<option>
标记为基于cookie值进行选择。我如何使用Razor控制它?
我在Razor视图上有<select>
元素。它呈现为具有语言值的下拉框。我通过自定义Cookie和一个自定义的Cookie识别视图引擎来设置语言。在Razor视图引擎中设置基于Cookie的html选择值的选定值
比方说,我有一个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);
这使得选择什么语言的逻辑远离实际选择列表的陈述吨。如果使用很多,你可以把所有的逻辑放在一个共享的方法中。