0

JavaScript onchange 関数を関連付けたビューに、モデルのプロパティ (通貨) のドロップダウン リストがあります。

このような関数の目的は、モデルの Dictionary プロパティ (Currencies をその Rate にマップする) に従って、他のフィールドの (Rate) 値を更新することです。

<td>

    @Html.DropDownListFor(model => model.Currency, new SelectList(ViewBag.CurrencyList, "Code", "Code"), new {onchange="update(this)"})
    @Html.ValidationMessageFor(model => model.Currency)
    <script type="text/javascript">

        function update(elem) {
           // alert("Currency changed!")
           document.getElementById("@Html.IdFor(model => model.Rate)").value = '@Model.Currencies[<I_WISH_I_COULD_PUT_A_JS_VARIABLE_IN_HERE>]' 
        }
    </script>

</td>

「I_WISH_I_COULD_PUT_A_JS_VARIABLE_IN_HERE」を elem.value にしたいのですが、JS 変数がリテラルとして解釈されるため、構文エラーが発生します。Javascript 値を含む HTML ヘルパーを呼び出すことができないようです。

私の目標は、コンボ ボックスで選択された値に従って EditorFor フィールドを更新することです。しかし、おそらく私のアプローチに何か問題がありますか?

どんな助けでも大歓迎です。

4

2 に答える 2

0

あなたはこれについて間違った方法で考えています。HTML、CSS、および JavaScript は、ASP.NET MVC Web アプリケーション プロジェクトの出力です。JavaScript は、上記の方法で Web アプリケーションに影響を与えることはできません。MVC Web アプリケーションと JavaScript の間に、魔法のように相互に応答するライブ接続はありません。

これを機能させるには@Modal.Currencies、JavaScript 配列のようなものに値を配置します。次に、その配列を使用して、(JavaScript 変数を使用して) 要素を更新するために必要な値を見つけます。

于 2013-01-18T10:54:16.443 に答える
0

コメントで述べたように、サーバー側のコードとクライアント側のコードを混在させていたため、私のアプローチはまったく意味がありませんでした。

関数 update(elem) 内で ajax を使用して、正しい値を取得し、対応するフィールドを更新しました。

$.ajax({
                type: "GET",
                url: "Currency?code=" + elem.value,
                success: function (msg) {
                    document.getElementById(RateId).value = msg;
                }
});

これが将来誰かに役立つことを願っています。乾杯。

于 2013-01-19T20:29:15.363 に答える