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 回答