【发布时间】:2014-03-12 08:11:21
【问题描述】:
问题说明:我想根据从 db 获得的显示名称更改 MVC 的 Razor 视图中标签的显示名称(@Html.LabelFor)。
我在 _Layout.cshtml
中添加了语言的下拉列表 <li>@Html.Action("Index", "LanguageDropdown", new { languageid = Request["languageId"] })</li>
我为下拉菜单创建了一个局部视图:
@model ALCMS.Web.Models.Master_or_Configuration.LanguageDropdownModel
<script type="text/javascript">
function GetLanguage() {
var languageId = $('#LanguageId').val();
var Url = "@Url.Content("~/MasterConfigGeneral/GetLanguage")";
$.ajax({
url: Url,
dataType: 'json',
data: { LanguageId: languageId },
success: function (data) {
}
});
}
</script>
<div style="display:inline-block">
@Html.DropDownListFor(l => l.LanguageID, new SelectList(Model.Languages, "Value", "Text"), "Select Language", new { id = "LanguageId" ,onchange="GetLanguage()" })
</div>
部分视图控制器:
public ActionResult Index(string languageId)
{
//return View();
var languages = dbEntity.LookupLanguages;
var model = new LanguageDropdownModel
{
LanguageID = languageId,
Languages = languages.ToList().Select(l => new SelectListItem
{
Value = Convert.ToString(l.LanguageID),
Text = l.Name
})
};
return PartialView(model);
}
在 Controller Json Result 方法中:
public JsonResult GetLanguage(int languageID)
{
JsonResult jsResult = new JsonResult();
objdbGlobalTenant.ddlLanguage = (from lsr in dbEntity.LocaleStringResources
where lsr.LanguageID == languageID
select new SelectListItem()
{
Text = lsr.ResourceValue,
Value = lsr.ResourceName
}).Distinct().ToList<SelectListItem>();
//ViewBag.Language = objdbGlobalTenant.ddlLanguage;
jsResult.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
return jsResult;
}
现在一切正常。我可以根据 Language 下拉菜单的 change 事件在 Controller 的 Json Result 方法中获取选定的 langaugeID。基于此语言 ID,我得到了我需要为特定视图申请的显示名称(资源值)。
问题:
- 1>从 db 获取显示名称后如何更改显示名称 语言更改事件触发时的特殊观点。??为了 例如:目前我看到的是 Create.CSHTML。现在如果我改变 语言下拉菜单它应该触发控制器中的 Json 事件和 获取值后,它应该将值应用于它的视图 从 db 获得。
注意: Dropdown 在 Layout.cshtml 中(类似于 .aspx 中的 master)
2>我放置在 Layout.cshtml 中的下拉菜单正在刷新 每次加载继承(layout.cshtml)的新视图时。如何 让控制器在回发期间保持其状态??
3>如何从多个布局中获取选中的下拉项
控制器,根据语言更改每个视图中的显示名称 布局中的下拉菜单
如何做到这一点??如果我做错了建议我其他方法...
【问题讨论】:
标签: javascript jquery asp.net-mvc json razor