MVC C JS根據後台傳入物件設定

2021-09-08 12:37:45 字數 2141 閱讀 7606

今天(20170401)在借鑑**的時候,看到如下一串

@if (model.product.id > 0)

{}

這裡,出現的@:就是能夠將在c#進行的**進行獲取到js或者是整個html中

查了一下,發現關於razor @:的介紹,還是有官方說明的,只是沒去找過。

「@:字串行」來顯式指明內容塊的開始。@:序列表明該行後面的內容應該被視為內容塊:

以下是中的內容,以防找不到,就拷過來了

[原文發表位址] asp.net mvc 3: razor』s @: and syntax

[原文發表時間] december 15, 2010 11:48 pm

這是我正在寫的博文系列中的另一篇,涵蓋asp.net mvc 3的一些新功能:

·        razor中的新@模型關鍵字(10月19日)

·        razor中的層(10月22日)

·        用razor實現伺服器端注釋(11月12日)

·        razor的@:和語法(今天)

用razor實現流暢程式設計

razor儘量減少編寫乙個檢視模板需要敲入的字元數,實現快速流暢的程式設計工作流。與大部分模板的語法不同,你不必在html中為了明確地標記出服務模組的開始和結束而中斷程式設計。razor解析器足夠聰明,能從你的**中推斷出來。這使其簡潔,富有表現力的語法輸入乾淨,快速,有趣。

例如下面的**片段迭代一列商品(product):

當執行時它產生的結果如下:

razor用來隱式鑑別乙個**段什麼時候結束的乙個方法是尋找代表內容塊開始的標記或元素內容。例如,在上面的**段中razor自動地把foreach迴圈裡面的模組當作乙個html內容塊,因為它看到開始的標記序列並且知道這在c#中是無效的。

這個獨特的技術——使用標記來識別**中的內容塊——是使razor在涉及html生成的情況下簡潔高效的乙個重要因素。

用@明確表示內容的起始

然而不是所有的內容塊都是以標記元開始,在有些案例中,razor解析器不能隱式檢測出內容塊。

這就需要razor通過在**塊中使用「@:字串行」來顯式指明內容塊的開始。@:序列表明該行後面的內容應該被視為內容塊:

舉個更實際的例子。下面的**段顯示在商品脫銷的時候,我們如何在商品名旁邊輸出資訊「(已售完!)」:

由於我沒有將訊息「已售完!」巢狀在html標籤元素內,razor不能隱式判斷@if塊中的內容是否是乙個內容塊的開始。我們用「@:字串行」來明確地指出我們**段裡的這行應被當作是內容塊。

在@:內容塊中使用**碎塊(code nugget)

除了輸出靜態內容,你也可以使**碎塊嵌入以@:字串行開始的內容塊中。

例如,在下面的**段中我們有兩個@:字串行:

注意我們在第二個@:序列中如何傳送內容塊中的單品(unit)數目的(例如「只剩下3了!」)。我們通過在內容行中嵌入乙個@p.unitsinstock**碎塊來實現。

多行內容

razor使在html元素中包裝多行內容變得簡單。例如,下面我們的@if容器中的內容塊被包裝在乙個html元素中,這會使得razor把它當作內容:

對於在那些沒有被外部html元素包裝的多行內容情形,你可以使用多個@: 序列:

另外 ,razor允許你用乙個元素 來顯式標識內容:

標籤是乙個 razor 特殊處理的元素。razor將塊的內部內容視為內容塊,不呈現包含那些內容的標籤(這意味著只呈現內部內容,不呈現標籤本身)。這使呈現沒有被html元素包裝的多行內容塊變得方便。

如果你想要更簡潔的@: 序列,元素也能根據需要用來標識單行內容:

上面的**將呈現出和我們早期看過的@:版本相同的輸出。razor會自動地從輸出結果中省略掉包裝部件,只是呈現出裡面的內容。

總結

razor啟用一種簡潔的模式化語法,實現非常流暢的編碼工作流。 razor能靈活地通過檢測元素來識別內容塊的起始, 從而讓razor方法在有html生成的場景中很有效,也使你不用明顯地標註95% 的 if/else 和foreach 場景中內容塊的開始/結束.

在當你不想在乙個**容器塊中使用html元素,卻需要更精確地標明乙個內容塊的邊界時,你可以使用razor的@:和句法。

希望這些會有所幫助。

對後台傳入的資料,進行時間分類展示

渲染效果 將相同的資料根據年月份分塊渲染 2017年5月 12110 11111 12112 222222 2018年10月 12113 111113 12114 111114 情況 仿後台傳入的資料 test3 注 當後台資料轉化為陣列的資料太多,且渲染的資料只有其中的幾個資料,則需要對原資料進行...

js分頁,後台傳入json列表

員工編號 姓名性別 身份證號 政治面貌 職位員工狀態 學歷專業 修改離職 第1頁共1頁 tiinfoentity info new tiinfoentity 建立實體類 自定義實體類 將查詢條件存入實體類 info.set ename req.getparameter name info.set p...

C 後台傳入資料JS接收

今天碰到個問題,就是後台傳入的資料,在js中for迴圈的時候,下面那個j根本就不會往上加。所以只能將後台傳入的物件,轉換為json格式,由js進行解析後生成js中的物件 for var i 1 i 16 i 只是,如下這麼寫,既不報錯,也出不來資料。1 var imagestr json.parse...