我在C#方法中有以下if-else语句(返回一个JSON对象)。 即使if语句(language ==" en")的条件为真,else语句也会执行。 为什么是这样?该方法由另一个文件中的以下代码行调用:
Ux.locale.Manager.setConfig({
ajaxConfig : {
method : 'GET'
},
language : 'en',
tpl : 'getLocale.castle?language={locale}',
type : 'ajax'
});
language
值与tpl
值组合以生成调用该方法的网址(在我的情况下为getLocale.castle?language=en
)。
[return: JSONReturnBinder]
public Locale GetLocale(string language)
{
if (language == "en")
{
Locale englishLang = new Locale();
englishLang.region.center.title = "Center Region";
englishLang.region.east.title = "East Region - Form";
englishLang.buttons.save = "Save";
englishLang.fields.labels.firstName = "First Name";
englishLang.fields.labels.lastName = "Last Name";
englishLang.fields.labels.chooseLocale = "Choose Your Locale";
return englishLang;
} else {
Locale frenchLang = new Locale();
frenchLang.region.center.title = "Region Centre";
frenchLang.region.east.title = "Region Est - Formulaire";
frenchLang.buttons.save = "Enregistrer";
frenchLang.fields.labels.firstName = "Prenom";
frenchLang.fields.labels.lastName = "Nom";
frenchLang.fields.labels.chooseLocale = "Choisissez vos paramètres régionaux";
return frenchLang;
}
}
我尝试过使用if (language.Equals("en"))
,但即使这样,也会执行else语句,而不是if语句。
答案 0 :(得分:1)
即使if语句(language ==" en")的条件为真,else语句也会执行。这是为什么?
最有可能的原因? language
不等于" en" 。确保您的变量中没有任何额外的空格(常见的陷阱,有时在检查调试器时对人眼不明显)并检查外壳是否正确。
例如,尝试
language.Trim().ToLower() == "en"
很可能你的问题会消失。
答案 1 :(得分:0)
问题在于变量language
被使用了两次(一次在language
行language : 'en'
属性中,第二次在行tpl: 'getLocale.castle?language={locale}'
中。这引起了混淆当language
参数传递给getLocale方法时(没有传递正确的language
参数)。当我更改language
参数的名称时,问题就解决了,if -statement已被执行。