型号:
public class TestModel
{
public string SomeString { get; set; }
}
查看:
@model MyProject.ViewModels.TestModel
<script>
function Test()
{
var modelDataJSON = '@Html.Raw(Json.Encode(Model))';
alert(modelDataJSON);
}
</script>
@{Model.SomeString = "asdf";}
<button type="button" onclick="Test()">Test</button>
JS警告始终返回JSON,其中所有字段都设置为null: {“SomeString:空}
答案 0 :(得分:0)
这是正常行为......您应该在脚本块之前更改值,如下所示......
@{Model.SomeString = "asdf";}
<script>
function Test()
{
var modelDataJSON = '@Html.Raw(Json.Encode(Model))';
alert(modelDataJSON);
}
</script>
在页面渲染之前,Razor将解析视图中指定的所有“符号和表达式”,因此,这一行......
var modelDataJSON = '@Html.Raw(Json.Encode(Model))';
在将页面发送到浏览器之前,将替换为模型的实际值...
var modelDataJSON = '{"SomeString":null}';
但是,如果在脚本块之前更改值,Razor将使用当前值替换表达式。您可以通过在浏览器上查看页面源如何使用“硬编码”字符串替换值来轻松查看此内容