Javascript JS总是返回一个空模型

Javascript JS总是返回一个空模型,javascript,asp.net-mvc,razor,Javascript,Asp.net Mvc,Razor,型号: 视图: JS警报始终返回JSON,其中所有字段都设置为空: {SomeString:null}这是正常行为…您应该在脚本块之前更改值,如下所示 @model MyProject.ViewModels.TestModel <script> function Test() { var modelDataJSON = '@Html.Raw(Json.Encode(Model))'; alert(modelDataJSON);

型号:

视图:

JS警报始终返回JSON,其中所有字段都设置为空:
{SomeString:null}

这是正常行为…您应该在脚本块之前更改值,如下所示

@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>
在页面发送到浏览器之前,将替换为模型的实际值

var modelDataJSON = '@Html.Raw(Json.Encode(Model))';

但是,如果在脚本块之前更改值,Razor将用当前值替换表达式。通过查看浏览器上的页面源代码,您可以很容易地看到这一点:如何用硬编码字符串替换值

尝试在脚本块之前添加@{Model.SomeString=asdf;}行谢谢,这澄清了情况,尽管存在一些问题。我希望通过这段代码可以得到当前的值​​属性模型-执行方法测试时。有这种可能性吗?当然,您只需记住,客户端浏览器上没有模型……只有html元素。这意味着…不要试图用javascript操作模型,而是应该操作页面元素,如文本框、隐藏字段等。将模型值保留在页面元素中,并操作元素谢谢。我将与元素一起工作,只是别无选择。
@{Model.SomeString = "asdf";}

<script>
    function Test()
    {
        var modelDataJSON = '@Html.Raw(Json.Encode(Model))';
        alert(modelDataJSON);
    }
</script>
var modelDataJSON = '@Html.Raw(Json.Encode(Model))';
var modelDataJSON = '{"SomeString":null}';