我有一个简单的 ViewModel:
public class IndexViewModel
{
public bool ShowWelcomeMsg { get; set; }
}
在我看来,我需要 JS 中的这个属性:
<script type="text/javascript">
var ShowWelcomeMsg = @Model.ShowWelcomeMsg;
</script>
但这不正确,因为它输出 False
而不是 false
但无论如何,这个问题更通用,因为我想知道 int、string 等的解决方案嗯:
编码 View 模型属性以在 JavaScript(在 Razor 中)中使用它的正确方法是什么?
最佳答案
这应该可以完成工作:
<script type="text/javascript">
var ShowWelcomeMsg = @Html.Raw(Model.ShowWelcomeMsg);
</script>
您应该首先序列化您的数据。你应该传递一个带有 json 符号的字符串,而不是传递一个 bool 值:
public class IndexViewModel
{
public string ShowWelcomeMsg { get; set; }
}
为了序列化为 json,你应该这样做:
public ActionResult Index()
{
var serializer = new JavaScriptSerializer();
var vm = new IndexViewModel
{
ShowWelcomeMsg = serializer.Serialize(true)
};
return View(vm);
}
这样您甚至可以序列化整个 C# 对象并将其用作 JavaScript 中的任何其他对象。
关于c# - 在 Razor 中将 View 模型属性编码为 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9741445/