【发布时间】:2014-10-15 08:14:14
【问题描述】:
如何在 JavaScript 代码和 ASP.NET MVC Razor 代码中使用相同的变量?
从下面的代码可以看出,我创建了一个dropdown 并用数据填充它。
我希望在下面div中使用所选项目。
- 当用户点击一个项目时,
div中包含的内容就会显示出来 - 然后选中的字符串项在
if statement内使用div内
目前发生的情况是,所选项目无法全局访问,导致您在下面看到的问题。
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<div class="display-field" align="left">
<select name="mydropdown" id="mydropdown" onchange="onChange()">
@foreach (var lLMMI in lIM)
{
<option value="@lLMMI.Key.Product.PCode">
@locItem.Key.Loc.N (@lLMMI.Key.Loc.Code)
</option>
}
</select>
<br /><br />
</div>
}
var itemselected = "";
<div>
<script>
function onChange() {
var item = document.getElementById("mydropdown").value;
$('#summary').show();
}
</script>
<div id="summary">
@foreach (var lLMMI in lIM)
{
if (@lLMMI.Key.Pro.PCode == itemselected.toString())
{
<summary>extra html elements are added etc.</summary>
}
}
【问题讨论】:
-
简单的答案:你不能。 C#(这是 Razor 为您运行的)在服务器上 运行,并用于生成 发送到客户端的任何内容。然后,您的 JavaScript 在客户端 上运行,完全不与服务器接触(通过 AJAX 请求除外,这完全不同)。 What are you really trying to do?
-
看起来您希望根据下拉列表的选定值填充从服务器调用的数据。这可以通过 Ajax 调用来实现,将值作为参数提供。
-
将根据所选项目在摘要中调用某些函数。但我需要知道如何将所选项目从下拉列表传递到上面 div 中的 if 语句。如果你知道怎么做,那就太棒了
-
正如 Tomas 所说,你不能。
if语句在发送到浏览器之前在服务器上运行。
标签: javascript c# asp.net asp.net-mvc razor