Javascript JS总是返回一个空模型
型号: 视图: JS警报始终返回JSON,其中所有字段都设置为空: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);
{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}';