我将ViewBag中的少量值传递给我的View,然后编写了一些jquery来读取和使用它。
public ActionResult Update(int id)
{
ViewBag.ProductId = id;
var settings = _service.GetAdvancedSettings();
ViewBag.Settings = settings;
return View();
}
只是为了让您了解我已发布从Setting
方法返回的GetSettings()
类。
public class AdvancedSettings
{
public bool ShowName { get; set; }
public bool ShowQuantity { get; set; }
public bool ShowPrice { get; set; }
}
我收到以下错误。
到目前为止,我能够读取并使用“id”的int值。我如何使用该对象及其值?
答案 0 :(得分:4)
您可以将设置转换为json:
var settings = @(Html.Raw(Json.Encode(ViewBag.Settings)));
在这种情况下,您应该创建表示设置的视图模型类,以避免将来出现错误,如果设置将被更改且无法转换为json。
答案 1 :(得分:0)
在视图中使用隐藏的输入:
<input type="hidden" id="AdvancedSettings_ShowName" value="@ViewBag.Settings.ShowName" />
<input type="hidden" id="AdvancedSettings_ShowQuantity" value="@ViewBag.Settings.ShowQuantity" />
<input type="hidden" id="AdvancedSettings_ShowPrice" value="@ViewBag.Settings.ShowPrice" />
然后调用js文件中隐藏输入的值:
var settings = {
showName : $('#AdvancedSettings_ShowName').val(),
ShowQuantity: $('#AdvancedSettings_ShowQuantity').val(),
ShowPrice: $('#AdvancedSettings_ShowPrice').val()
}
答案 2 :(得分:0)
在控制器中声明Viewbag对象。在View中创建脚本var。现在你可以在你的js文件中使用var了。 Hete GetContainersUrl是具有json值的字符串。
<script>
var SELECTED_BLOBS = "@ViewBag.GetContainersUrl";
</script>
在js文件中使用像这样
if (SELECTED_BLOBS != "") {
var obj = JSON.parse(SELECTED_BLOBS);
}
答案 3 :(得分:0)
将值作为模型传递,然后使用System.Web.Helpers.Json
对其进行编码。这是我使用的代码片段。
控制器
public ActionResult Update(int id)
{
ViewBag.ProductId = id;
var settings = _service.GetAdvancedSettings();
ViewBag.Settings = settings;
return View(settings);
}
查看
@model AdvancedSettings
<script type="text/javascript">
$(document).ready(function () {
var jsonSettings = "@System.Web.Helpers.Json.Encode(Model)";
var settings = JSON.parse(jsonSettings.replace( /&(lt|gt|quot);/g , '"'));
console.log(settings);
});
</script>
}