我正在为DNN站点制作自定义插件,并以此为墙。 我正在尝试从资源文件中获取字符串,但是只能从ResourceKey =“”中使用。 如果我放
ToolTip='<%$Resources:btnDelete %>'
我收到错误消息“找不到键为'btnDelete'的资源对象”
如果我从后面的代码中尝试。
protected void Page_Load(object sender, EventArgs e) {
rqValName.ErrorMessage = Localization.GetString("rqValNameResource1.ErrorMessage", LocalResourceFile);
}
在调试器中,我可以看到该字符串,但未在站点上显示它。
这是也不起作用的代码:
<asp:RequiredFieldValidator ID="rqValName" CssClass="dnnFormMessage dnnFormError" runat="server" ControlToValidate="txtName" ErrorMessage='<%$Resources:rqValNameResource1 %>'></asp:RequiredFieldValidator>
如果我把ResourceKey =“ rqValNameResource1”放好,但是我不能在这里做
<asp:BoundField ItemStyle-Width="700px" DataField="sShortDescription" HeaderText='<%$Resources:HeaderShortDescription %>' />
DotNetNuke.Services.Exceptions.ModuleLoadException:找不到键为'HeaderShortDescription'的资源对象。
如果我输入ResourceKey =“ HeaderShortDescription”,它会说“属性ResourceKey不是元素BoundField的有效属性”。
我不想对此进行硬编码,因为稍后我需要翻译它。
谢谢。
答案 0 :(得分:2)
ToolTip='<%$Resources:btnDelete %>'
不是DNN样式。 ResourceKey是正确的语法。
protected void Page_Load(object sender, EventArgs e) {
rqValName.ErrorMessage = Localization.GetString("rqValNameResource1.ErrorMessage", LocalResourceFile);
}
简单的方法是添加属性
ResourceKey="rqValNameResource1.ErrorMessage"
到ASP.Net Validator控件。
<asp:BoundField ItemStyle-Width="700px" DataField="sShortDescription" HeaderText='<%$Resources:HeaderShortDescription %>' />
您是否正在使用DataGrid控件?如果是,则可以在Grid_Init事件中使用LocalizeDataGrid()方法。示例:
<asp:DataGrid ID="myGrid" runat="server"...
...
<asp:BoundField HeaderText="ShortDescription" />
RESX文件:
键:ShortDescription.Header
值:简短说明
后面的代码:
protected void myGrid_Init(object sender, EventArgs e)
{
Localization.LocalizeDataGrid(ref myGrid, LocalResourceFile);
}
在其他情况下,您可以在(Control)_ItemDataBound事件中使用此代码:
protected void myControl_ItemDataBound(object sender, ControlItemEventArgs e)
{
if (e.Item.ListItemType == ListItemType.Header)
{
foreach (TableCell tc in e.Item.Cells)
{
tc.Text = Localization.GetString(string.Format("{0}.Header", tc.Text), LocalResourceFile);
}
}
}
(或类似的东西,我目前没有有效的示例)。
开心的DNNing!
迈克尔