0

ビューに辞書があり、[inputID, tooltip] があります。

また、このページには入力要素の一連の ID があります。要素 ID を使用して辞書を反復処理する必要があります。

 @{
 Dictionary<string, string> questionMarks = 
     ViewBag.QuestionMarks as Dictionary<string, string>;
 @}

 <script type="java-script">
 $(document).ready(function () {
    var inputs = $('input,select[type!="hidden"]');
    $.each(inputs, function(i, val) {
    if ($(val).attr('id')) { 
                var id = $(val).attr('id');

                var iter_string = '@questionMarks' + "[" + id + "]";
                alert(iter_string);              // [1]
                alert('@questionMarks["cvc"]');  // here i got tooltip
             }
    });
</script>

[1] 私は System.Collection.Generic.Dictionary`2[System.String, System.String][cvc] を持っています

Jan Jongboom のおかげで、 ついに欲しいものを手に入れました。

@using System.Web.Script.Serialization
@{
    Dictionary<string, string> questionMarks = ViewBag.QuestionMarks as Dictionary<string, string>;
    JavaScriptSerializer jss = new JavaScriptSerializer();
@}
<script type="text/javascript">
    var questionMarks = @Html.Raw(jss.Serialize((Dictionary<string, string>)ViewBag.QuestionMarks));     
    $(document).ready(function () {
        for ( keyVar in questionMarks ) {
            $('#' + keyVar).attr('original-title', questionMarks[keyVar]);
            $('#' + keyVar).tipsy({ gravity: 'w' });
        }
    });
</script>
4

4 に答える 4

0

入力が描画されるときにデータ属性を入力にアタッチすると、これに役立ちます。

例: http://jsfiddle.net/Krch9/

$(document).ready(function(e) {
    var inputs = $("input", "#container");
    $.each(inputs, function(i, val) {
        var ToolTipText = $(this).data('tooltiptext');
        /// Run your tooltip plugin here ...
        $("#output").html($("#output").html() + "<br>" + $(this).attr('id') + " : " + ToolTipText);
    });
});

MVC ヘルパーを使用すると、簡単に追加できます。

@Html.TextBoxFor(x => x.Field, new { data_tooltiptext = "Blah blah"});

マークアップは次のようになります。

<input type="text" id="Field" data-tooltiptext="Blah blah">

編集:追加のヘルプ

あなたの要素をIEループ

foreach( var question in questionMarks) {
   @Html.TextBox(question.Key, new { data_tooltiptext = question.Value} );
}

次に、javascript の例 (必要に応じて変更する必要があります ...) を使用して、要素でプラグインを実行します。

于 2011-11-30T10:39:20.203 に答える
0

次のようなことをします

<script>
var questionMarks = @new JavaScriptSerializer().Serialize((Dictionary<string, string>)ViewBag.QuestionMarks) ;
</script>

questionMarksこれで、繰り返し処理できるjavascript 変数ができました。

于 2011-11-30T10:11:55.527 に答える
0

いいえ、サーバー変数を介してクライアント側のコードから反復することはできません。JS 変数 (JSON など) から初期化コードを生成するか、サーバー側で必要な html を生成できます。また、ajax リクエストを介して jsavascript からそのようなデータをリクエストすることもできます。

于 2011-11-30T10:02:04.090 に答える
-1

引用符を削除するには、Html.Raw() を使用します

var questionMarks = '@Html.Raw(jss.Serialize((Dictionary<string, string>)ViewBag.QuestionMarks))';
于 2011-11-30T10:58:53.460 に答える