我正在尝试从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;
导致错误。
答案 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。我希望你们都很高兴看到我试图将一个方形钉子钉入一个圆孔!