MVC页面不同控制器下的方法调用同一个后台函数
来源:互联网 发布:国产保温杯 知乎 编辑:程序博客网 时间:2024/06/16 18:57
尤其是在多语言开发当中,切换语言的时候很有用。关键点就是要找到路径。
比如,我有个_LoginPartial.cshtml,这个页面是网页的公用部分,自己开发的网站,每个页面都会加载这一部分内容。
我在_LoginPartial.cshtml放置了两个radio用于语言切换,我想在点击radio时调用HomeController控制器下的ChangeLanguage()方法,实现语言切换。
但是现在不是光有HomeController控制器,还有AccountController控制器和ManageController控制器,如何在AccountController/ManageController下的显示页面也能调用HomeController下的ChangeLanguage()后台方法?研究了一下解决了,上代码:
在_LoginPartial.cshtml页面写上脚本:
<script type="text/javascript">
$(document).ready(function () {
if (@ViewBag.radioNo==1){ //ViewBag.radioNo是后台传过来的标示参数
$("input[name='LanguageType']").eq(0).click();
}
else{
$("input[name='LanguageType']").eq(1).click();
}
})
$(document).ready(function () {
$("[name='LanguageType']").change(function () {
if(@ViewBag.IsHomePage==1){ //HomeController的Index页面
//ViewBag.IsHomePage是后台传过来的标示当前是哪种控制器下的页面
$.ajax({
type: "POST",
url: "Home/ChangeLanguage",
data: { LanguageType: $('input[name=LanguageType]:checked').val() },
dataType: "json",
success: function (data) {
//location.reload();
window.location.href=window.location.href; //这句是调用完后自动刷新页面
}
});
}
else if(@ViewBag.IsHomePage==0){ //HomeController的非Index页面
$.ajax({
type: "POST",
url: "ChangeLanguage",
data: { LanguageType: $('input[name=LanguageType]:checked').val() },
dataType: "json",
success: function (data) {
window.location.href=window.location.href;
}
});
}
else{ //ManageController/AccountController等非homecontroller页面,即@ViewBag.IsHomePage=2
$.ajax({
type: "POST",
url: "../Home/ChangeLanguage",
data: { LanguageType: $('input[name=LanguageType]:checked').val()},
dataType: "json",
success: function (data) {
window.location.href=window.location.href;
}
});
}
})
})
</script>
页面中的radio描述如下:
<input type="radio" name="LanguageType" value="1" checked="checked" style="width:10px;" />@Html.Lang("english")
<input type="radio" name="LanguageType" value="2"style="width:10px;" />@Html.Lang("chinese")
HomeController的ChangeLanguage()定义如下:
public static List<int> ajaxSuccessFlag = new List<int>();
public JsonResult ChangeLanguage(int LanguageType)
{
if (LanguageType == 2)
{
Session["Lang"] = LangType.cn;
languageType = 2;
}
else
{
Session["Lang"] = LangType.en;
languageType = 1;
}
ajaxSuccessFlag.Clear();
ajaxSuccessFlag.Add(1);
return Json(ajaxSuccessFlag, JsonRequestBehavior.AllowGet);
}
其中ajaxSuccessFlag这样写是为了给个返回值,告诉ajax调用后台函数成功。如果调用成功后要进行别的处理,就要有返回值;如果只是纯粹的调用后台,别的不做,可以是public void ChangeLanguage(int LanguageType)
最后就是控制器管理页面的方法了,要给页面标示值:
public ActionResult XXXX()
{
isHomePage = 0;
if (Session["Lang"] == null)
{
Session["Lang"] = LangType.en;
languageType = 1;
}
ViewBag.radioNo = languageType;
ViewBag.IsHomePage = isHomePage;
。。。
}
- MVC页面不同控制器下的方法调用同一个后台函数
- 同一个用户在不同页面共享数据的常用方法
- Ajax实现前台页面调用后台方法(mvc)
- 页面调用后台方法
- 点击不同的按钮把同一个表单提交到不同的页面处理的方法
- 用__doPostBack()方法调用后台方法的方式中,页面没有__doPostBack()函数的解决
- JAVA同一个类的函数(方法)之间的调用
- 如何在页面上调用同一个方法
- 链接到同一个页面的不同位置
- 多个线程调用同一个线程函数的方法
- 多个脚本调用同一个函数的方法
- Visual Stuido (1): 跨项目调用 同一个solution下面不同project之间的方法调用
- iOS 利用 UISegmentedControl在同一个控制器切换不同的tableView
- 一个list中包含不同的type时如何遍历?页面如何接收?Jquery调用后台方法?
- jQuery调用页面后台方法
- jQuery调用页面后台方法
- 在同一个页面使用多个不同的jQuery版本而不冲突的方法
- Word中如何在同一个页面下设置两个不同的页码
- substring 与 substr 详解
- Linux 内核信号量(semaphore) __down() 函数浅析
- 移动端头部meta、link书写比较好的案例
- Wireshark实战分析之IP协议(二)
- 基于容器的微服务架构剖析
- MVC页面不同控制器下的方法调用同一个后台函数
- 图像平滑处理
- centos java 之旅
- GMF学习历程(3)
- Git使用教程
- 计算机会议综合网站
- MySQL安装与配置
- devstack安装openstack 心得
- unicode 编码在线转换工具