通过ABP创建工程后,发现导航栏右侧有语言切换选项。但项目刚启动时只需要一种语言,因此需要去掉。

通过浏览器的F12可以发现多语言的id类似navbar-right , 全局搜索后就看到了多语言菜单项实在Views/Shared/_TopBar.cshtml中实现的。

<ul class="nav navbar-nav navbar-right">

@Html.Action("LanguageSelection", "Layout")

</ul>

上面用到Html.Action, msdn如下:

public static MvcHtmlString Action(

this HtmlHelper htmlHelper,

string actionName,

string controllerName,

Object routeValues

)

可以看出是调用了Controllsers/LayoutController类里的LanguageSelection方法。 其实现如下:

[ChildActionOnly]

public PartialViewResult LanguageSelection()

{

var model = new LanguageSelectionViewModel

{

CurrentLanguage = _languageManager.CurrentLanguage,

Languages = _languageManager.GetLanguages()

};

return PartialView("_LanguageSelection", model);

}

msdn如下:

protected internal virtual PartialViewResult PartialView(

string viewName,

object model

)

PartialView方法返回了一个PartialViewResult实例, 这个从ViewResultBase继承的类就是提供model给view,然后呈现ui给用户。也就是把Views/Layout/_LanguageSelection.cshtml 和 vm数据关联在一起来呈现UI。

从ViewResultBase继承下来的有2个类, PartialViewResult和ViewResult,都是为了呈现UI。

当然ViewResultBase是从ActionResult继承下来,都是在controller的action方法中使用的, 只不过有些ActionResult为了呈现UI,有些为了呈现文件,有些为了呈现json字符串等等。

_LanguageSelection.cshtml的代码如下:

@model UIH.NIS.Web.Models.Layout.LanguageSelectionViewModel

<li class="dropdown">

<a href="#" class="dropdown-toggle" data-toggle="dropdown">

<i class="@Model.CurrentLanguage.Icon"></i>

<span>@Model.CurrentLanguage.DisplayName</span>

<b class="caret"></b>

</a>

<ul class="dropdown-menu">

@foreach (var language in Model.Languages)

{

if (language.Name != Model.CurrentLanguage.Name)

{

<li><a href="@Url.Action("ChangeCulture", "AbpLocalization")?cultureName=@(language.Name)&returnUrl=@(Request.Url)"><i class="@language.Icon"></i> @language.DisplayName</a></li>

}

}

</ul>

</li>

可以看到它也限定了它的model类型为LanguageSelectionViewModel, code(Models/Layout/LanguageSelectionViewModel)如下:

public class LanguageSelectionViewModel

{

public LanguageInfo CurrentLanguage { get; set; }

public IReadOnlyList<LanguageInfo> Languages { get; set; }

}

@foreach 是Asp.Net Razor的语法,@关键字用来切入C#遇到在asp页面中, 具体可以看看w3schools

至此, ABP的多语言实现基本理清, 如果要删除多语言菜单项也就很简单,可以在_TopBar.cshtml中删除html.action呈现partialView的代码。

ABP Web开发入门-去掉多语言菜单项相关推荐

  1. web开发(脚本和动态语言)

    web开发(脚本和动态语言) _root.createTextField("mytext", 1, 50, 50, 100,20); mytext.multilance=false ...

  2. 《Java Web开发入门很简单》学习笔记

    <Java Web开发入门很简单>学习笔记 1123 第1章 了解Java Web开发领域 Java Web主要涉及技术包括:HTML.JavaScript.CSS.JSP.Servlet ...

  3. SpringBoot的Web开发入门案例2—国际化

    SpringBoot的Web开发入门案例2-国际化 改造logintest项目:SpringBoot的Web开发入门案例1 地址:https://blog.csdn.net/BLU_111/artic ...

  4. Python Django Web开发入门-刘硕-专题视频课程

    Python Django Web开发入门-16018人已学习 课程介绍         使用强大的Django Web框架轻松高效的开发网站,各类web应用(微信公众平台) 课程收益     Dja ...

  5. JAVA Web开发入门

    课程目标 熟悉B/S与C/S体系之间区别 熟悉Tomcat服务器 熟悉整个Http请求DNS解析过程 一.Web开发入门 1.1 引入 之前的程序: java桌面程序,控制台控制,socket gui ...

  6. JSP WEB开发入门基础到高手进阶教程002

    JSP WEB开发入门基础到高手进阶教程 -------开发入门 JSP与微软的Active Server Pages 兼容,但它是使用类似HTML的卷标以及Java程序代码段而不是VBScript. ...

  7. 【python】 web开发入门

    进入Web开发 现在你完成了Python忍者训练,准备深入Ptyhon的Web开发,但现在的问题是有很多的框架,从中选择最好的框架非常困难,但从初学者的角度出发,Flask基本Web框架将非常适合We ...

  8. Flask Web开发入门

    Flask Web开发入门(八)之文件上传 https://blog.csdn.net/kangkanglou/article/details/79027425 前端:详情见上面的链接/也可以直接用f ...

  9. web开发入门_Web开发人员和设计师的自由职业入门

    web开发入门 Learn how to get started with freelancing as a web developer and designer. Cara Bell shares ...

最新文章

  1. 12月2日,微软副总裁Scott Guthrie为你讲述Silverlight的未来
  2. 单臂路由与三层交换机实现VLAN通信
  3. 深度学习相关资料总结
  4. CAS Server(一):搭建服务端
  5. Spring 通过Java Config方式连接数据库
  6. MySQL表完整性约束
  7. 机器学习中激活函数和模型_探索机器学习中的激活和丢失功能
  8. window 2008 和 windows vista windows 7 安装 MSMQ
  9. JavaOne 2015 –第二十版十大收获
  10. 谈谈软件的开发及成长历程
  11. Ext-Ext4文件系统_日志JBD2
  12. Zstack协议栈中CC2530协调器掉电重启后重新加入之前网络的方法
  13. cad尺寸标注快捷键_CAD快速在尺寸标注后加上公差的方法有哪些?【AutoCAD教程】...
  14. 阿里云授权和子账号登录
  15. 【Unreal4】gitignore目录减小项目大小
  16. 人工智能深度神经网络的研究
  17. 人脸对齐算法调研(Face Alignment)
  18. 俄罗斯钓鱼服务器位置,俄罗斯钓鱼4《RussianFishing4》钓鱼地点攻略
  19. 【Android】AppCompat V21:将 Materia Design 兼容到5.0之前的设备
  20. springboot中service中注入dao失败测试类中注入成功_聊一聊 Java 服务端中的乱象

热门文章

  1. Problem C: 体重正常吗?
  2. 联想e480卡顿严重_商务本的游戏之路,ThinkPad E480 体验
  3. java课程设计电子相册_java课程设计 基于java的电子相册系统设计与实现.pdf
  4. 严重: A web application created a ThreadLocal with key of type...
  5. TF-IDF结合余弦相似性 判断文章相似性
  6. Google,Verizon和网络中立性辩论
  7. steam(wallpaperEngine)双屏,比较cool的桌面推荐
  8. Bi-lstm+CRF实现NER(随机生成词向量)
  9. Win7下的MapGIS 6.7
  10. 新型冠状病毒肺炎相关常用英语单词和词语