我想从java脚本和.cshtml视图中的资源文件中访问键/值对。 对于我的cshtml上的一些静态内容,我不想在我的模型中创建属性,所以如果我可以直接访问资源文件会很好。
答案 0 :(得分:15)
您可以创建一个resx文件并将其属性设置为public, as described here。
然后在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")
答案 1 :(得分:0)
您应该能够通过生成的代理类从Razor视图访问资源。这不适合你吗?
答案 2 :(得分:0)
当我们想要从JavaScript和.cshtml视图中的资源文件中访问键/值对时,让我们考虑以下情况。
@Html.ActionLink("New Contact", null, null, null, new { id = "general", Href = "#", @Newtitle = @Resources.General.Newtitle })
资源文件包含以下数据
Name Value
---- -----
Newtitle New title Value
现在您已准备好使用资源数据
$('#general').click(function (evt) {
alert($(this).attr("Newtitle"));
evt.preventDefault();
});
感谢。