1

この記事を使用して画像ヘルパーを作成しました: http://www.asp.net/mvc/tutorials/older-versions/views/using-the-tagbuilder-class-to-build-html-helpers-cs。ピリオドを置き換えると書かれていますが、他の制限については言及されていません。

GUID文字列をIDとして使用しない限り、すべて正常に機能します。

Razor コード:

@Html.Image(id, ....) //passes a GUID string to helper fine

ImageHelper は、Web ページで説明されているとおりです。

builder.GenerateId(id);
//breakpoint after this shows the builder object 
//does not create an id attribute when id is a GUID string.
//using id.ToString() doesn't work for GUIDs either

MergeAttributes で GUID 文字列を使用すると正常に動作します。

builder.MergeAttribute("title", id); //the GUID string is img title no problem
builder.MergeAttribute("class", id); //the GUID string is class as expected 

GUID 文字列を ID として使用する際の制限や回避策はありますか?

4

1 に答える 1

5

ID は、数字ではなく文字で始める必要があります。多くの場合、GUID は数字で始まるため、問題が発生します。 このチェックを実行する をTagBuilder.GenerateId呼び出します。CreateSanitizedId

if (!TagBuilder.Html401IdUtil.IsLetter(c1))
    return (string) null;

最善の策は、ID の先頭に「guid」などのプレフィックスを追加することです。

于 2012-05-31T22:12:34.407 に答える