构建语言切换器-2种语言-ASP.NET MVC
ASP.NET MVC应用程序,接近完成,然后决定需要使用语言切换器.这将只是两种语言:英语和日语.他们应该能够在两者之间切换,但是如果未选择一个,则应选择浏览器的默认语言. 我想知道在这种情况下最好的解决方案是什么. 首先想到,路线!因此,我将路由更改为在每个路线的末端具有/{l},然后默认l = "".然后,在我的Basecontroller中(每个控制器都基于它),我检查路由中的L变量.每个动作都根据语言返回视图. 我只想在URL末尾攻击/ja-jp,它将以日语显示景色.似乎还没有正确地路线.然后,我的观点真是太糟糕了,并手工编码了链接...我无法让助手首先输出正确的链接...并养成了对它们进行编码的坏习惯.因此,我必须再次重新编码每个链接 - 以入侵末尾的语言变量. 第二思想 ...好吧,使用jQuery将语言变量附加到所有锚的HREF上.在某些情况下隐藏了直到需要等的某些情况下,这似乎过于笨拙且困难... 所以...在这一点上,我决定只做任何事情.
20 2024-04-26
编程技术问答社区
多个IF/CASE语句的替代方案
有没有办法避免使用C#中的/案例语句? 在我的应用程序中,我最终将使用8个以上的字段来创建一个linq查询,其中每个表达式都可以为null或!= null,因此它将给我64个方案. 我没有提供任何代码示例,因为我可以使用if/case做到这一点,并尽可能地简化它. 如果您熟悉该问题的某些有用方法,我将感谢任何建议. 代码示例(它仅包括两个代表,但我必须添加更多的滤波器数据) 存储库 public virtual IEnumerable Get(Expression> filter = null, Expression> filter1 = null) { IQueryable query = dbSet; if (filter != null) {
18 2024-04-26
编程技术问答社区
在ListView中执行SwitchCell OnChanged命令
我是Xamarin.forms的新手,并尝试搜索我的问题. 我有一个switchcells的listView,这些项目源是简单的数据级的集合. 现在,当我更改开关键中的交换机状态时,我想称呼一种方法...这不应该是问题,但是我无法弄清楚我如何知道哪个switchcell或换句话说dataclass,哪个项目被切换. 我希望它像我评论的代码一样,但我真的不确定...我还认为我在这里混合命令和方法.... 我的XAML:
20 2024-04-26
编程技术问答社区
C# 有没有更好的方法在通用类型上使用Switch-Case / If-Else?
我目前正在尝试对通用类型进行一些铸造. 因此,基本想法是拥有一种接受通用类型的方法,并根据传递的类型进行不同的操作. 出于简单原因,我只会展示float,bool和default 的使用 设置看起来像这样(其中T是类本身定义的通用类型): protected T DoStuff(T value) { switch (value) { case float floatValue: float result = DoFloatStuff(floatValue); switch (result) { case T output: return output; } case bool boolValue: bool result = DoBoolStuff(boolValue); switch (result
16 2024-04-25
编程技术问答社区
将硬编码的开关语句转换为动态加载的多键一值查询
什么是一个好的收集/容器,用于基本上存储带有多个秋季型情况的开关插件的内容?我想,一种更准确的方法是,"多键 - 一价"查找的好C#解决方案是什么?我检查了系统.收集名称空间及其关联的名称空间,但没有找到特别适合多个键的人. 最近,我为自己写了一个小型控制台程序,以构建和验证我的Web应用程序所需的XML文件,以避免手动编写它时发生的错误.但是对于初始版本,我编码了许多略有易变的元素 - 特别是一些验证词典和一个具有大量倒线选项的大型开关插入.尽管这将在接下来的几个月中工作,但可能有必要最终更新这些硬编码元素,这些元素目前需要编辑源文件.为了避免这种情况,我决定将词典和开关信息存储在XML文件中(最终以可怕的递归趋势进化,编写一个程序来构建和验证这些 em> XML文件给我).现在,在将其存储在文件中时,当我检索数据时,我不能像词典一样重建开关语句.因此,我只需要模拟开关语句的效果,这基本上意味着我需要几个"键"来引用相同的"值". 示例摘要来自Switch语句.此方法将将特
14 2024-04-25
编程技术问答社区
C#模式匹配类似于Rust的match/case,带有重构功能。
rust您可以做这样的事情: for n in 1..101 { let triple = (n % 5, n % 2, n % 7); match triple { // Destructure the second and third elements (0, y, z) => println!("First is `0`, `y` is {:?}, and `z` is {:?}", y, z), (1, ..) => println!("First is `1` and the rest doesn't matter"), (.., 2) => println!("last is `2` and the rest doesn't matter"), (3, .., 4) => println!("First is `3`, last is `4`, and the rest doesn't matter"), /
16 2024-04-24
编程技术问答社区
如何对依赖Console的switch语句进行单元测试
我是单元测试的新手,我正在使用VS 2010单元测试框架. 我有一个功能可以从用户那里获取整数,然后根据用户输入执行不同的功能.我在单元测试上阅读了很多东西,但是我还没有找到任何向我展示如何测试Switch语句的分支的内容.到目前为止我有什么: [TestMethod] public void RunBankApplication_Case1() { using (var sw = new StringWriter()) { using (var sr = new StringReader("1")) { Console.SetOut(sw); Console.SetIn(sr); BankManager newB = new BankManager();
4 2024-04-24
编程技术问答社区
有没有办法使用C#8开关表达式返回字符串值?
我有此代码,其中交换机的每个部分都将值返回到ModeMessage2.是否可以使用新的C#switch表达式(或任何其他代码优化)来优化此switch的工作方式? switch (Settings.Mode) { case MO.Learn: ModeMessage2 = "Use this mode when you are first learning the phrases and their meanings."; if (Settings.Cc == CC.H) { Settings.Cc = CC.JLPT5; App.cardSetWithWordCount = null; App.DB.RemoveSelected(); } break; case MO.Practice:
6 2024-04-24
编程技术问答社区
替换C#中的OrderBy开关
以下代码段工作正常. switch (sortOrder) { case "Group": list = list.OrderBy(o => o.Group).ToList(); break; case "Company": list = list.OrderBy(o => o.Company).ToList(); break; case "CurrencyId": list = list.OrderBy(o => o.CurrencyId).ToList(); break; case "Field": list = list.OrderBy(o => o.Field).ToList(); break; } ,但我想编写一个更灵活的代码,而根本不使用开关.类似: list = list.OrderBy(o =>
6 2024-04-23
编程技术问答社区
跌破开关语句(有时有效?)
我有一个开关语句,例如下面: switch (condition) { case 0: case 1: // Do Something break; case 2: // Do Something case 3: // Do Something break; } 我有一个编译错误告诉我Control cannot fall through from one case label ('case 2:') to another 好吧...是的,你可以.因为您从case 0:到case 1:. 实际上,如果我删除我的case 2:,并且它是关联的任务,则代码编译,并且会从case 0:中降为case1:. . 那么,这里发生了什么,我该如何使我的案件陈述掉落并执行一些中间代码? 解决方案 堆叠标签和秋季直线之间存在差异. c#支持前者:
10 2024-04-23
编程技术问答社区
如何从Switch语句中存储一个案例列表?
在我的程序中,我有一个列表框,当用户双击一个对象时,它会查看Switch语句,以查看应该发生什么事件.随着列表开始变得更大,我很好奇是否有办法避免必须在2个位置中维护对象列表(一次在列表中添加到列表框中,然后在Switch语句中. 有没有办法索引/读取/存储我的Switch语句的各种情况,然后将它们作为对象添加到我的列表框? ? 示例:(不起作用,只是理论) Switch (n) ForEach (Case c in Cases) { arrayCases.Add(c); } listbox.Items.AddRange(arrayCases); 编辑: 继续我现在有字典建议: public void SetDictionary() { //add entries to the dictionary dict["cat"] = new Action(Cat); dict["dog"] = new Act
18 2024-04-23
编程技术问答社区
通用的工厂方法,根据类型返回特定的对象
我有以下基类: public abstract class ItemComponentSaver : where TType : ItemComponent { public abstract bool SaveItem(TType item, object objectRowInTableFromEF, PropertyInfo columnTypeProperty); } 我支持的每种类型,也有一些孩子.我的想法是用它们多态使用它们以稍后执行保存操作,例如 public class CellSaver : ItemComponentSaver { public override bool SaveItem(Cell item, object objectRowInTableFromEF, PropertyInfo columnTypeProperty) {
8 2024-04-22
编程技术问答社区
为什么typeof(int).ToString()不是常数?
我正在尝试这样做: const string intType = typeof(int).ToString(); switch (typeof(MyT).ToString()) { case intType: { return "int"; break; } ... } 但编译器说: 错误CS0133:被分配给" inttype"的表达式必须是恒定的 我知道,typeof操作员在编译时工作.那么,怎么了? 解决方案 我知道,typeof操作员在编译时工作. 您不知道因为知识必须是 true .您从哪里得到typeof在编译时执行的想法?它产生一个非恒定对象.然后不能保证ToString每次运行时都不会产生不同的字符串,因此不能将其视为常数. 那么,怎么了? 您是从错误的信念中推理的. C#规范清楚地描述了表达式必须满足的条件,以使表达式为编译时常数.这些条件包括不包含
18 2024-04-22
编程技术问答社区
C# switch语句中的每个case/default块都有大括号?
通常,C#中的开关语句看起来像 switch (sh) { case 1: DoThis(); DoThat(); break; case 2: DoThis(); DoThat(); break; default: DoThis(); DoThat(); break; } 但是,有史以来第一次,我看到某人在开关语句中使用卷曲括号为下面的每个案例语句: : switch (sh) { case 1: { DoThis(); DoThat(); break; } case 2: { DoThis(); DoThat(); break; } default: { DoThis(); DoThat();
4 2024-04-22
编程技术问答社区
空的F#歧视性联盟案例的C#类型
我正在使用C#访问F#歧视联盟,并尝试在工会案件上使用开关语句.对于具有至少一个字段但没有空值的值,由于这些值没有生成相应的类,只有一个属性.考虑以下F#歧视联盟. type Letter = A of value:int | B of value:string | C | D 在c#i中,有一个函数中的以下开关语句,该函数具有类型字母的参数字母: switch (letter) { case A a: Console.WriteLine(a.value); break; case B b: Console.WriteLine(b.value); break; default: if (letter.IsC) Console.WriteLine("C"); else if (letter.IsD) Console.WriteLine("D"); } 默认情况处理联合价值为空的情况.我更喜欢: switch
14 2024-04-22
编程技术问答社区
如何用C#在switch-case条件下用当前case语句的值跳转到另一个case语句?
如何在带有当前案例语句的值的开关情况下跳到另一个案例语句? 是否可以使用交换机案例实现此类操作,还是有其他方法可以实现? 有可能实现吗?如果没有,那么有其他方法可以实现吗? 解决方案 此代码有效: switch (this.Name) { case "": if (this.Owner == null) { goto DoBill; } break; case "Bill": DoBill: break; } 但是,任何实际做的人都应该被枪杀.或至少与之交谈.为什么不做明智的事情? switch (param.Component.Type) { case "Combo": returnComboItemSelect = generateCB(param);
16 2024-04-21
编程技术问答社区
这个(通用范围类)条件逻辑是否应该用多态性代替?如果是,那么为什么?
如下所示是通用范围类.目的是保存一个范围,然后在要求时稍后在指定(布尔值)(如果给定值在范围内). 我已经阅读了多个文章,问题,博客等" 我的问题,真的值得将代码分为多个类,每个类从字面上看一行代码.希望下面的代码将表明我的意思. 该类取决于另外两个类,这些类别在此处没有显示,但是如果有人需要它,我可以稍后再包含它. namespace Common.Utilities { public class GenericRange where T : struct, IComparable { #region Properties public T Min { get; private set; } public T Max { get; private set; } public GenericRangeType RangeType { get; private set; }
12 2024-04-21
编程技术问答社区
如何在C#中切换List<string>的大小写?
我想在c#中对List进行switch case. 假设我有以下列表: var myList = new List(new string[] { "Apple", "Pear" }); 现在我想检查苹果还是梨,然后做点什么.在if statement中看起来像这样: if (myList.Contains("Apple")) //do something else if (myList.Contains("Pear")) //so some other thing else //throw error 现在,我该如何以switch statement? 的方式干净地这样做 解决方案 我不认为,您所需的行为可以通过开关进行干净建模.但是,为了使其成为可管理且易于添加/更改,类似的事情如何: var handlers = new[] { new Tuple("App
2 2024-04-21
编程技术问答社区
动态切换案例
我正在尝试为一些不同的用户制作一个简单的开关案例控制台菜单:admin,moderator和user. admin将具有create, delete, modify, show函数,moderator - create, modify, show函数,user - create, show函数可供选择. 管理员开关案例: if(userType == "admin") { string i = Console.ReadLine(); switch(i): case "create": Console.WriteLine("Created"); break; case "modify": Console.WriteLine("Modified"); break; case "delete":Console.WriteLine("Deleted");
12 2024-04-21
编程技术问答社区
如何重构这个switch语句?
string liquidClass = string.Empty; switch (cmbLiquidClass.Text) { case "LiquidClass1": liquidClass = Settings.Default.LiquidClass1; break; case "LiquidClass2": liquidClass = Settings.Default.LiquidClass2; break; case "LiquidClass3": liquidClass = Settings.Default.LiquidClass3; break; case "LiquidClass4": liquidClass = Settings.Default.LiquidClass4; break; case "L
10 2024-04-21
编程技术问答社区