最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

教你如何在 Javascript 文件里使用 .Net MVC Razor 語(yǔ)法

 更新時(shí)間:2014年07月23日 09:41:16   投稿:hebedich  
文章主要是介紹了通過(guò)一個(gè)第三方類(lèi)庫(kù)RazorJS,實(shí)現(xiàn)Javascript 文件里使用 .Net MVC Razor 語(yǔ)法,很巧妙,推薦給大家

相信大家都試過(guò)在一個(gè) View 里嵌套使用 javascript,這時(shí)就可以直接使用 Razor 語(yǔ)法以調(diào)用 .NET 的一些方法。如以下代碼嵌套在一個(gè) Razor 的 View 里:

<script>
 var currDate = '@DateTime.Now'; //直接調(diào)用.NET的方法
 
 console.log(currDate)
</script>

但另一種情況是,如果我想在一個(gè)獨(dú)立的 JS 文件里使用 Razor,那以上的方法可行不通,因?yàn)镸VC不會(huì)直接解釋JS文件,只有放到 Razor view里才可以。不過(guò)在此我向大家推薦一個(gè)第三方類(lèi)庫(kù),就可讓你直接在獨(dú)立的 JS 文件里使用 Razor


此類(lèi)庫(kù)名字就叫 RazorJS,這是一個(gè)開(kāi)源的項(xiàng)目,可到以下地址下載源碼:

https://bitbucket.org/djsolid/razorjs

或者也可以直接通過(guò)Nuget進(jìn)行安裝:

PM> Install-Package RazorJS

OK,先說(shuō)說(shuō)這個(gè)類(lèi)庫(kù)能為我們帶來(lái)什么吧。安裝后你可以直接在 JS 文件里使用所有 .NET 支持的方法,如上面的代碼就可以直接放到獨(dú)立的JS文件里去使用。另外你還可以在JS文件里引用.NET的全名空間,如要調(diào)用 File 對(duì)象來(lái)讀取文本文件內(nèi)容,就可以直接引用 System.IO 命名空間:

@using System.IO;
 
var s = 'Hello at @DateTime.Now \n @File.ReadAllText(System.Web.Hosting.HostingEnvironment.MapPath("~/web.config"))';

運(yùn)行后就可直接在 JS 里獲取到 web.config 文件里的所有內(nèi)容??礃幼油Σ诲e(cuò)吧,呵呵。那到底此類(lèi)庫(kù)是如何運(yùn)作的呢?其實(shí)它是使用了一個(gè)叫 RazorEngine 的類(lèi)庫(kù)達(dá)到以上效果的。RazorEngine 是一個(gè) Razor 的解釋引擎,其功能非常強(qiáng)大,我之前也在一些項(xiàng)目中使用過(guò)。通過(guò)此引擎,你甚至可以直接在 win form 中使用 Razor 語(yǔ)法,呵,不知你有沒(méi)想到其好處了?

嗯,不錯(cuò),有了此引擎,就可以完全獨(dú)立了 web 環(huán)境去使用 MVC 的 Razor ,這個(gè)功能可讓你非常方便地制定一些靈活的模板,如一些 email 模板,你可直接在模板里使用各種.NET 方法甚至自定義的對(duì)象,然后動(dòng)態(tài)生成想要的內(nèi)容。OK,但這個(gè)引擎并不是這次我要介紹的東西,在此只是順便說(shuō)說(shuō)啦

接下來(lái)說(shuō)一個(gè) RazorJS 的使用方法,如果你是直接通過(guò) Nuget 安裝的,那么就會(huì)自動(dòng)幫你配置好 web.config,這是建議的安裝方法,否則你就要自己添加 web.config 里的配置了,有好幾處地方,這里也不詳說(shuō),大家安裝了后可對(duì)比一下就知道了。要使用 RazorJS 也很簡(jiǎn)單,只需使用以下語(yǔ)法引用你要的 JS 文件就可以了:

<p>
 @Html.RazorJSInline("~/Scripts/Example.js")
</p>

不過(guò)要注意一點(diǎn)的是,在你的 web.config 里會(huì)有一段配置允許 RazorJS 使用的目錄,就是說(shuō)你的JS文件必須放到此目錄里才可以使用此方法來(lái)引用:

<razorJSSettings handlerPath="~/razorjs.axd">
 <allowedPaths>
 <add path="~/Scripts" />
 </allowedPaths>
 </razorJSSettings>

最后要說(shuō)一下的是其限制。有好的地方當(dāng)然也有不好的一面,由于其使用的是 RazorEngine ,所以你不可以在 JS 里使用 MVC 的 HTML Helper 方法,即所有 @Html 開(kāi)頭的方法。另一個(gè)問(wèn)題就是其不能識(shí)別 JS 里的注釋代碼,就是說(shuō)如果你在注釋里使用了 .NET 的方法也一樣會(huì)執(zhí)行,如果你的方法正確就沒(méi)問(wèn)題,否則就會(huì)中斷 JS 的執(zhí)行直接報(bào)錯(cuò)了,所以不要以為沒(méi)用的方法注釋掉就可以了哦。

關(guān)于不能執(zhí)行 @Html helper的問(wèn)題,我這里提供另一個(gè)解決辦法,不過(guò)這就可修改其源代碼,想折騰的朋友可以試試。其實(shí)這樣做也可以使用很多自定義的方法,更加靈活方便哦。下載了 RazorJS 源碼后,你可直接在上面修改然后重新編譯一個(gè)DLL出來(lái),另一種方法就是將其源碼當(dāng)作另一個(gè)項(xiàng)目,直接加到你自己的項(xiàng)目中去。

在其源碼中,打開(kāi) HtmlTemplateBase.cs 文件,你就可在此添加自己的方法了,然后在這里添加的方法都可直接在 JS 里調(diào)用。如在源碼中你可發(fā)現(xiàn)已封裝的一個(gè) Href 方法,可將 URL 轉(zhuǎn)換為在請(qǐng)求客戶(hù)端可用的 URL。根據(jù)此寫(xiě)法,我們就可添加自己的方法,如以下是我封裝一個(gè)動(dòng)態(tài)獲取國(guó)際化資源文件的方法,這樣就可直接在JS里使用.NET的資源文件進(jìn)行國(guó)際化了:

public class HtmlTemplateBase : TemplateBase
 {
 //手工調(diào)用資源文件管理器
 private static ResourceManager resources = (ResourceManager)System.Type.GetType
  ("RazorJS.Resource").GetProperty("ResourceManager").GetValue(null, null);
 
 public HtmlTemplateBase()
 {
  Url = new UrlHelper(HttpContext.Current.Request.RequestContext);
 }
 public string Href(string originalUrl)
 {
  return Extensions.ResolveUrl(originalUrl);
 }
 
 public string GetLangText(string langKey)
 {
  根據(jù)key返回相關(guān)的語(yǔ)言
  return resources.GetString(langKey);
 }
 
 public UrlHelper Url { get; set; }
 }

然后在JS里直接調(diào)用即可:

var s = '@GetLangText("CoderBlog")';
console.log(s);

運(yùn)行完后,就可直接在JS里輸入 CoderBlog 這個(gè)key的內(nèi)容啦

相關(guān)文章

  • 使用JS實(shí)現(xiàn)一個(gè)Sleep函數(shù)的示例代碼

    使用JS實(shí)現(xiàn)一個(gè)Sleep函數(shù)的示例代碼

    這篇文章主要介紹了使用JS實(shí)現(xiàn)一個(gè)Sleep函數(shù),實(shí)現(xiàn)?sleep?函數(shù)其實(shí)非常簡(jiǎn)單,主要是理解?JavaScript?中異步執(zhí)行情況,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • 使用CSS+JavaScript或純js實(shí)現(xiàn)半透明遮罩效果的實(shí)例分享

    使用CSS+JavaScript或純js實(shí)現(xiàn)半透明遮罩效果的實(shí)例分享

    這篇文章主要介紹了使用CSS+JavaScript或純js實(shí)現(xiàn)半透明遮罩效果的實(shí)例分享,編寫(xiě)半透明遮罩層時(shí)要注意定位問(wèn)題、不要滿(mǎn)屏遮罩,需要的朋友可以參考下
    2016-05-05
  • 微信小程序?qū)崿F(xiàn)modal彈出框遮罩層組件(可帶文本框)

    微信小程序?qū)崿F(xiàn)modal彈出框遮罩層組件(可帶文本框)

    這篇文章主要給大家介紹了關(guān)于微信小程序?qū)崿F(xiàn)modal彈出框遮罩層組件(可帶文本框)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 分享5個(gè)JavaScript的寫(xiě)法小技巧

    分享5個(gè)JavaScript的寫(xiě)法小技巧

    寫(xiě)代碼的時(shí)候總有一些東西是會(huì)重復(fù)出現(xiàn)的,次數(shù)多了你就會(huì)想找找捷徑了,下面這篇文章主要給大家介紹了關(guān)于5個(gè)JavaScript的寫(xiě)法小技巧,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-02-02
  • js最簡(jiǎn)單的雙向綁定實(shí)例講解

    js最簡(jiǎn)單的雙向綁定實(shí)例講解

    下面小編就為大家分享一篇js最簡(jiǎn)單的雙向綁定實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • JavaScript將字符串轉(zhuǎn)換成字符編碼列表的方法

    JavaScript將字符串轉(zhuǎn)換成字符編碼列表的方法

    這篇文章主要介紹了JavaScript將字符串轉(zhuǎn)換成字符編碼列表的方法,實(shí)例分析了javascript中charCodeAt函數(shù)的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • 用js實(shí)現(xiàn)簡(jiǎn)單算法的實(shí)例代碼

    用js實(shí)現(xiàn)簡(jiǎn)單算法的實(shí)例代碼

    下面小編就為大家?guī)?lái)一篇用js實(shí)現(xiàn)簡(jiǎn)單算法的實(shí)例代碼。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-09-09
  • javascript設(shè)計(jì)模式 – 狀態(tài)模式原理與用法實(shí)例分析

    javascript設(shè)計(jì)模式 – 狀態(tài)模式原理與用法實(shí)例分析

    這篇文章主要介紹了javascript設(shè)計(jì)模式 – 狀態(tài)模式,結(jié)合實(shí)例形式分析了javascript狀態(tài)模式相關(guān)概念、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-04-04
  • Javascript?中?var?和?let?、const?的區(qū)別及使用方法

    Javascript?中?var?和?let?、const?的區(qū)別及使用方法

    ECMAScript 變量是松散類(lèi)型的,意思是變量可以用于保存任何類(lèi)型的數(shù)據(jù),每個(gè)變量只不過(guò)是一個(gè)用于保存任意值的命名占位符,這篇文章主要介紹了Javascript?中?var?和?let?、const?的區(qū)別以及具體使用效果,需要的朋友可以參考下
    2023-01-01
  • uniapp抖音小程序一鍵獲取用戶(hù)手機(jī)號(hào)的示例代碼

    uniapp抖音小程序一鍵獲取用戶(hù)手機(jī)號(hào)的示例代碼

    文章介紹了如何在uniapp抖音小程序中通過(guò)點(diǎn)擊按鈕一鍵獲取用戶(hù)手機(jī)號(hào),encryptedData和iv通過(guò)點(diǎn)擊按鈕回傳,后端部分通過(guò)解密獲取手機(jī)號(hào),感興趣的朋友一起看看吧
    2024-12-12

最新評(píng)論

榆林市| 剑河县| 莲花县| 邵阳县| 杭锦旗| 平度市| 上蔡县| 尼玛县| 梅州市| 黄陵县| 图木舒克市| 陆良县| 庆元县| 万荣县| 达日县| 马鞍山市| 阜城县| 乌什县| 夏邑县| 冕宁县| 获嘉县| 伊吾县| 巴青县| 杨浦区| 丁青县| 翁源县| 南和县| 定州市| 潜江市| 金昌市| 吕梁市| 昭平县| 庆阳市| 林口县| 甘谷县| 仁布县| 定安县| 汶川县| 嘉义县| 新巴尔虎左旗| 醴陵市|