2012-01-25 30 views
0

是否有內置的ASP.Net或MVC3函數生成一個給定字符串的有效CSS類。 Tagbuilder似乎有一個AddCssClass。然而,只是想知道是否還有其他需要一個字符串,並通過將無效字符轉換爲有效的字符轉換爲有效的CSS類名?是否有內置的C#函數來生成有效的CSS類名?

舉個例子說,我有一個字符串「測試。不正確類別名稱」

我在想,如果有一個輔助函數將其轉換爲「Test__Bad CLASS_NAME」或一些這樣的事情。

MVC似乎不會生成壞ID等,所以我只是想知道它是否有這樣做,所以我是一致的。我只是認爲這將是一個共同的要求。

+0

是什麼讓你認爲'TagBuilder.AddCssClass'產生一個有效的CSS的名字嗎?你可以扔它只是任何廢話,它會接受它:-)這是你的責任,不要扔廢話。 AFAIK沒有內置的方法。 –

+0

你需要一個輔助函數來生成一個CSS類(例如'.test {color:Red}'),或者你只是想要一個方法來爲你的代碼中的DOM元素指定一個類名(例如test)或查看)?我不確定我完全明白你想要什麼。 –

+0

@Darin Dimitrov也許我正在考慮身份證代。我認爲它交換了點,所以我認爲類名轉換爲有效。可能不會! :) – GraemeMiller

回答

3
string className = Regex.Replace(myInput, @"[^a-zA-Z_\-]+", "_"); 

我知道這種模式過於熱心和替換它不應該像數字字符,但它會給你一個單向函數生成有效的CSS類名。

+0

謝謝。我想我過於樂觀,認爲它是內置的。 – GraemeMiller

+0

請記住,使用此方法不能保證兩個不同的輸入始終會產生不同的結果。就像''一些類''和''一些類,''都給''some_class'' –

+0

是的,我明白這一點。對我的要求來說不夠好。只是不想添加代碼,如果我錯過了一個明顯的內置函數。 – GraemeMiller

1

這裏的@atornblad溶液作爲擴展方法

public static string ToValidClassName(this string srcString) 
    { 
     return Regex.Replace(srcString, @"[^a-zA-Z_\-]+", "_"); 
    } 

使得它「感覺」建於:-)

相關問題