Правильный способ доступа к файлу ресурса для пользовательского элемента управления добавлен в модуль DNN?
Я работаю с шаблоном модуля Christoc, пытаюсь создать модуль с локализованным текстом. Я добавил новый пользовательский элемент управления с именем TeamList.ascx в проект, а в папку App_LocalResources я добавил два новых файла:
TeamList.ascx.resx иTeamList.ascx.fr-CA.resx(для канадского французского).
Я могу включить пользовательский элемент управления в моем представлении без проблем, но когда модуль загружается на страницу, все места, содержащие локализованный текст, остаются пустыми.
Я попытался зарегистрировать пользовательский элемент управления, включая:
<moduleControl>
<controlKey>Teams</controlKey>
<controlSrc>
DesktopModules/LTSC_DashboardModule/TeamList.ascx
</controlSrc>
<supportsPartialRendering>False</supportsPartialRendering>
<controlTitle>Team Control</controlTitle>
<controlType>View</controlType>
<iconFile />
<helpUrl />
<viewOrder>0</viewOrder>
<supportsPopUps>True</supportsPopUps>
</moduleControl>
... в файле манифеста DNN, но это не имеет никакого эффекта.
Я не уверен, что мне здесь не хватает. Я думаю, что это, вероятно, что-то простое.
Заранее благодарю за любую помощь.
1 ответ
Доступ к файлу ресурса осуществляется с помощью методов локализации в DNN. Вам нужно будет опубликовать, как вы ссылаетесь на файлы ресурсов, чтобы в конечном итоге выяснить, что вы делаете неправильно.
Добавить файл ресурса просто, создайте файл RESX, соответствующий вашему файлу ASCX
TeamList.ascx получит файл ресурса в App_LocalResources/ с именем TeamList.ascx.resx, что приведет к пути /app_localresources/teamlist.ascx.resx
Чтобы получить доступ к этому пути из кода, вы просто позвоните
var stringValue = Localization.GetString("STRINGNAME.Text", LocalResourceFile)
Где LocalResourceFile наследуется от PortalModuleBase (вам нужно, чтобы ваш ASCX-файл наследовал базовый класс, созданный моими шаблонами, они наследуют от PMB, или вы можете наследовать от PMB напрямую.
Доступ к нему из файла ASCX может быть выполнен аналогично
<%=Localization.GetString("STRINGNAME.Text", LocalResourceFile)%>
Изнутри управления с
<asp:label id="SOMEID" ResourceKey="STRINGNAME.Text" runat="server" />
Единственный другой потенциальный улов - если вы загружаете свой ASCX-файл в другой ASCX-файл, если это так, вам нужно передать конфигурацию модуля дочернему ASCX-файлу в code behind.
Я делаю это в модуле DNNSimpleArticle с
var mbl = (dnnsimplearticleModuleBase)LoadControl(controlToLoad);
mbl.ModuleConfiguration = ModuleConfiguration;
mbl.ID = System.IO.Path.GetFileNameWithoutExtension(controlToLoad);
phViewControl.Controls.Add(mbl);
Это указывает на правильное направление?