在javascript中设置剃刀变量

时间:2011-06-28 02:30:15

标签: javascript asp.net-mvc-3 razor

我正在尝试从javascript函数中为我的表单上的组合框的内容分配一个razor变量。像这样:

<script type ="text/javascript">
<!--
    function SomeFunction() {

        var hours = document.getElementById("Hours");
        var task = document.getElementById("TaskType_ID");
        @{            
            var tsk = @:task.value;            
         }

        @{            
        <text>
            hours.value = '@ViewBag.TaskTypes.GetHours(tsk)';
        </text>
        }

        return true;
    }

//-->
</script>

该行(以及我尝试过的所有其他变体)

var tsk = @:task.value;

导致错误。

2 个答案:

答案 0 :(得分:1)

正如Chris指出的那样,您正在混合客户端和服务器代码。 javascript是客户端代码,您需要服务器中的数据通过使用ajax调用函数(get / post)返回所需的值。以下是您可以采取的代码片段代码:

$("#tasks").change(function(){
    $.get('url',$(this).val(), function(data){
        // data is the hours returned from the selected task
        $("#hours").val(data);
    });
});

或者,不是每次选择任务时都调用服务器,而是始终可以将任务的值存储在变量中。感谢

答案 1 :(得分:1)

好。这就是我最后做的事情。我不再将对象传入视图中。我添加了一个脚本,它绑定到我的第一个字段的change事件,然后通过ajax在我的控制器中调用一个动作,并将结果放入第二个字段。像这样:

<script type="text/javascript">

    $(document).ready(function () {
        $("#q").change(function () {
            $.ajax({
                type: "GET",
                url: "Home/Test?value=" + $('#q').get(0).value,
                success: function(msg) {
                    $('#x').get(0).value = msg;
                }
            });
        });
    });

</script>
谢谢你带领我朝着正确的方向前进。使用所有剃刀语法,我忽略了这仍然是html的hact。我希望你们都很高兴看到我试图将一个方形钉子钉入一个圆孔!