Доступ к файлам ресурсов в MVC 3

#javascript #asp.net-mvc-3 #resources

#javascript #asp.net-mvc-3 #Ресурсы

Вопрос:

Я хочу получить доступ к паре ключ / значение из моих файлов ресурсов в представлениях java script и .cshtml. Для некоторого статического содержимого в моем cshtml я не хочу создавать свойство в моей модели, поэтому было бы неплохо, если бы я мог напрямую обращаться к файлам ресурсов.

Ответ №1:

Вы можете создать файл resx и присвоить его свойствам значение public, как описано здесь.

Затем на вашем cshtml вы можете использовать:

 @Resources.ResNameHere.Property
  

Для использования в javascript просто отобразите его в script блоке

 <script>
    var stringFromResource = "@Resources.ResNameHere.Property";
</script>
  

Вы также можете реализовать метод расширения для Html и читать ресурс из любого места, даже из базы данных, если вам нужно.

 public static MvcHtmlString Resource<T>(this HtmlHelper<T> html, string key)
{
    var resourceManager = new ResourceManager(typeof(Website.Resources.ResNameHere));

    var val = resourceManager.GetString(key);

    // if value is not found return the key itself
    return MvcHtmlString.Create(String.IsNullOrEmpty(val) ? key : val);
}
  

Затем вы можете вызвать как

 @Html.Resource("Key")
  

Ответ №2:

Вы должны иметь возможность получить доступ к ресурсу из Razor view через сгенерированный прокси-класс. У вас это не работает?

Комментарии:

1. Не уверен в этом. не могли бы вы, пожалуйста, пролить на это больше света. мои файлы ресурсов находятся в папке App_GlobalResources.

2. Не могли бы вы предоставить дополнительную информацию? Какие файлы у вас есть в папке App_GlobalResources, как вы пытаетесь получить доступ к ресурсам и какой сбой вы видите?

Ответ №3:

Давайте рассмотрим следующую ситуацию, когда мы хотим получить доступ к паре ключ / значение из файлов ресурсов в представлениях JavaScript и .cshtml.

Внутри .cshtml

 @Html.ActionLink("New Contact", null, null, null, new { id = "general", Href = "#", @Newtitle = @Resources.General.Newtitle })
  

где файл ресурсов содержит следующие данные

 Name      Value
----      -----
Newtitle  New title Value
  

Теперь вы готовы использовать свои данные ресурсов

Внутри JavaScript

 $('#general').click(function (evt) {
    alert($(this).attr("Newtitle"));
    evt.preventDefault();
});
  

Спасибо.