Проблема с простым условием if в JavaScript со строкой
Итак, что-то очень странное, ниже приведены значения предупреждений:
- consumerSupportEditableRole = true
- superAdminRole = false
- combRole = false
Однако странная вещь заключается в том, что оповещение в сочетании с ролью дает мне customerSupport/ConsumerContact/GetEmailLog. Так что по какой-то безбожной причине он входит в блок if. Я ожидал бы, что это пойдет в блок else, и предупреждение должно выплевывать Внедрение / Организация / GetEmailLog
var consumerSupportEditableRole = '@(Roles.IsUserInRole("Consumer Support Editable") ? "true" : "false")';
var superAdminRole = '@(Roles.IsUserInRole("Super Admin") ? "false" : "true")';
var combinedRole = consumerSupportEditableRole && superAdminRole
alert("consumerSupportEditableRole: " + consumerSupportEditableRole);
alert("superAdminRole: " + superAdminRole);
alert("superAdminRole && consumerSupportEditableRole: " + combinedRole);
if (combinedRole)
{
var url = '@Url.Action("GetEmailLog", "ConsumerContact", new { Area = "ConsumerSupport" })';
}
else
{
var url = '@Url.Action("GetEmailLog", "Organization", new { Area = "Implementation" })';
}
2 ответа
Решение
Удалите кавычки, вы получите не логические значения в JS, а строки
var consumerSupportEditableRole = @(Roles.IsUserInRole("Consumer Support Editable") ? "true" : "false");
var superAdminRole = @(Roles.IsUserInRole("Super Admin") ? "false" : "true");
var combinedRole = consumerSupportEditableRole && superAdminRole
alert("consumerSupportEditableRole: " + consumerSupportEditableRole);
alert("superAdminRole: " + superAdminRole);
alert("superAdminRole && consumerSupportEditableRole: " + combinedRole);
if (combinedRole)
{
var url = '@Url.Action("GetEmailLog", "ConsumerContact", new { Area = "ConsumerSupport" })';
}
else
{
var url = '@Url.Action("GetEmailLog", "Organization", new { Area = "Implementation" })';
}
Вы устанавливаете consumerSupportEditableRole
а также superAdminRole
к строкам, а не к логическим значениям. Так combinedRole
на самом деле:
var combinedRole = "true" && "false";
что делает это "false"
Это правда.