这是非常糟糕的做法。我不会像这样将服务器端 Razor 代码与 javascript 混合使用。我会简单地 JSON 序列化模型(或仅我需要的属性),然后直接操作它:
<script type="text/javascript">
// we serialize the IsTemplate and Active properties of the model because we
// only need them in javascript, but if we needed other properties we could have
// included them as well or serialize the entire model
var model = @Html.Raw(Json.Encode(Model.Select(x => new { x.IsTemplate, x.Active })));
// now that we have the model javascript variable, let's manipulate it:
if (!model.IsTemplate) {
$('#someButton').show();
if (model.Active) {
$('#activeschedulespan').show();
$('#inactiveschedulespan').hide();
}
}
</script>
但是,嘿,为什么我觉得您使用 javascript 来完成应该直接在服务器端完成的事情呢?在这个特定示例中,您使用 javascript 根据您在服务器上知道的值(您的模型)显示/隐藏 DOM 中的内容。因此,您可以完全摆脱这个 javascript,并根据模型的属性决定是否将这些部分包含在 DOM 中。