データが正しく動作しないための属性。mvcのhtmlエディタを使用したデータ属性
@Html.EditorFor(model => model.SireTag, new { data_typeahead = "dsfsdfsd" })
クロームブラウザを開くと、テキストボックスのデータ属性が表示されません。 私はゴーグルを試みましたが、有用なものは見つかりませんでした。
データが正しく動作しないための属性。mvcのhtmlエディタを使用したデータ属性
@Html.EditorFor(model => model.SireTag, new { data_typeahead = "dsfsdfsd" })
クロームブラウザを開くと、テキストボックスのデータ属性が表示されません。 私はゴーグルを試みましたが、有用なものは見つかりませんでした。
Html.EditorFor
の2番目のobject
パラメータは、HTML属性用ではありません。追加のビューデータ用です。 EditorFor
ヘルパーでは、HTML属性をカスタマイズすることはできません。具体的には<input>
ヘルパーが行います。彼らはほとんどの設定をモデルメタデータ(たとえば[Attributes]
)から取ります。 「修正」する
最も簡単な方法は明らかにEditorFor
を落としている。また
@Html.TextBoxFor(model => model.SireTag, new { data_typeahead = "dsfsdfsd" })
、プロパティのための独自のEditorTemplateを書きます。これにより、data_typeahead
の値をViewData["data_typeahead"]
(または "先読み")から取得することで、元の構文を使用(または簡略化)できます。
さらに一歩、より高度な、あなたのモデルプロパティに適用するために、独自のAttribute
を作ることができ+独自のModelMetadataProvider
(または - シンプルな - より以下のように、IMetadataAware
を使用)EditorTemplateが使用できるメタデータにそれを回すために - このにあなたの電話を回し、あなたのビューから完全に属性data-
について決定除去するために:
@Html.EditorFor(model => model.SireTag)
を...そして、あなたのモデルのようなものに:
public class MyModel
{
[Typeahead("dsfsdfsd")]
public string SireTag { get; set; }
}
実際にはです。 EditorForを使用して、追加のHTML属性を送信してください。このoverloadを使用し、additionalViewData
のパラメータを設定します。それはhtmlAttributes
プロパティを持つオブジェクトを期待:
@Html.EditorFor(
model => model.SireTag,
new {
htmlAttributes = new { data_typeahead = "dsfsdfsd" }
}
)
このようなものが生成されます。その論理的およびソリューションが動作するたくさん
<input id="SireTag" name="SireTag" ... data-typeahead="dsfsdfsd">
これは間違いなく答えになるはずです。 –
感謝を...素晴らしい.... –
このソリューションは動作しますが、@MarosDimitrio HTML属性を受け入れる 'EditorFor'メソッドのオーバーロードを投稿しました。 –