JS总是返回一个空模型

时间:2014-06-18 07:55:46

标签: javascript asp.net-mvc razor

型号:

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:空}

1 个答案:

答案 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将使用当前值替换表达式。您可以通过在浏览器上查看页面源如何使用“硬编码”字符串替换值来轻松查看此内容