Как я могу назначить значение файла ресурса и скрытое поле asp.net - PullRequest
1 голос
/ 26 февраля 2012

Я нахожусь в ситуации, когда мне нужно прочитать значение из скрытых полей asp.net

<asp:HiddenField ID="hdSearchInnerText"  runat="server" 
    Value="What are you looking for?" /> 

Это для многоязычного веб-сайта, и мне нужно прочитать значение для вышеупомянутого скрытого поля из файла ресурса .resx. Настоящая проблема заключается в том, что скрытые поля asp.net не принимают meta: resourcekey = "hdSearchInnerText" в качестве свойства , Как я могу обойти это, я пытался и не мог найти решение.

Любая идея или помощь приветствуется.

Ответы [ 2 ]

2 голосов
/ 26 февраля 2012

Действие из Tools\Generate Local Resources не создает мета-ключей для скрытых полей, но вы можете добавить их вручную.Итак, откройте файл ресурса из App_LocalResources и добавьте новую запись с именем hdSearchInnerTextResource1.Value и нужным значением «Что вы ищете?» Затем вы можете использовать его в разметке

<asp:HiddenField ID="hdSearchInnerText"  runat="server" 
    Value="What are you looking for?" meta:resourceKey="hdSearchInnerTextResource1" /> 

Редактировать

Вы все еще можете использовать «Создать локальные ресурсы» со скрытым полем, но вам нужно создатьновый элемент управления, который наследует класс HiddenField, переопределяет свойство Value и украшает его атрибутом "Localizable"

using System.Web.UI.WebControls;
using System.ComponentModel;

namespace MyApplication.Controls
{
    public class LocalizableHiddenField : HiddenField
    {
        [Localizable(true)]
        public override string Value
        {
            get
            {
                return base.Value;
            }
            set
            {
                base.Value = value;
            }
        }
    }
}

Зарегистрируйте это в Web.Config под тегом controls и используйте что-то вродеэто:

<cc:LocalizableHiddenField runat="server" ID="LocalizableHiddenField1" Value="some value"
            meta:resourcekey="LocalizableHiddenField1Resource1" />
1 голос
/ 05 апреля 2012

В своем коде вы можете написать что-то вроде:

this.hdSearchInnerText.Value = this.GetLocalResourceObject("hdSearchInnerText").ToString();

В качестве альтернативы, вы можете явно использовать ресурсы из репозитория App_GlobalResources:

<asp:HiddenField ID="hdSearchInnerText"  runat="server" 
Value="<%$ Resources:ResourceFile, hdSearchInnerText %>" /> 

, где ResourceFile - это имяглобальный файл ресурсов, а hdSearchInnerText - это имя текста ресурса со значением «Что вы ищете?».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...