2017-08-28 27 views
1

Razor允許將ASP.NET Core MVC標籤幫助器的參數作爲內聯C#表達式寫入相應的屬性聲明中。但是,由於HTML屬性由引號分隔,因此如果此表達式本身應包含引號,則語法如何?ASP.NET中的字符串文字核心MVC標籤幫助參數

下面是從https://docs.microsoft.com/en-us/aspnet/core/mvc/views/tag-helpers/authoring樣本:

<website-information info="new WebsiteContext { 
    Version = new Version(1, 3), 
    CopyrightYear = 1638, 
    Approved = true, 
    TagsToShow = 131 }" /> 

將這個會是什麼樣的WebsiteContext屬性之一是採取一個字符串?

回答

1

因爲我原來的答案是有缺陷的,這裏是一個辦法,將工作,我對你類似的代碼進行測試:

如果COPYRIGHTYEAR是一個字符串,你可以做的是使用單引號外報價和用雙引號爲像這樣的字符串:

<website-information info='new WebsiteContext { 
           Version = new Version(1, 3), 
           CopyrightYear = "1638", 
           Approved = true, 
           TagsToShow = 131 }' /> 
+0

隨着你的方法和ASP.NET核心MVC 1.1,我得到這個:在編譯處理此請求所需的資源編譯過程中出現錯誤。請查看以下具體的錯誤細節並適當修改您的源代碼。 [...]無效的表達術語''[...] CopyrightYear = \「1638 \」,[...]意外字符'\' –

+0

這可能是因爲您的WebsiteContext對象中的版權年份目前是int類型。將其更改爲鍵入字符串並查看。或者用一些其他字符串類型的屬性來嘗試\「escape技術 –

+0

那不是,我當然會將類型改爲字符串(而且我還試過用另一個字符串屬性)。 ?如果是的話,你使用的是什麼ASP.NET Core版本?難道這是一個2.0的功能嗎? –

0

作爲一種替代的解決方法,以在羅恩C'S答案中所描述的,一個也可以把WebSiteContext施工代碼到一個單獨的剃刀代碼塊,存儲在一個變量中的結果。

@{ 
var context = new WebsiteContext { 
     Version = new Version(1, 3), 
     CopyrightYear = "1638", 
     Approved = true, 
     TagsToShow = 131 }; 
} 

<website-information info="@context" />