如何在脚本标签中获取Model或Viewbag变量

2021/01/29 13:51 · jquery ·  · 0评论

vs'12 asp.net C#MVC4-Int.Appl.Template EF代码优先

这是我的很简单 Script

<script class="TractsScript">

     $('#Add').click(function (e) {

         var val = @ViewBag.ForSection;
         alert(val);

     });
</script>

作为示例,我想简单地在script或使用Viewbag.或中设置一个变量Model.

我在以下任何论坛中都找不到答案:StckTrace1StackTraceBetterAnswer

我尝试过的其他方法:

var model = @Html.Raw(Json.Encode(Model))
alert(model.Sections);
alert(@ViewBag.ForSection);

您可以通过提供Json或任何其他变量来实现:

1)例如,在控制器中,您可以使用Json.NET提供JsonViewBag

ViewBag.Number = 10;
ViewBag.FooObj = JsonConvert.SerializeObject(new Foo { Text = "Im a foo." });

2)在中View,将这样的脚本放在页面底部。

<script type="text/javascript">
    var number = parseInt(@ViewBag.Number); //Accessing the number from the ViewBag
    alert("Number is: " + number);
    var model = @Html.Raw(@ViewBag.FooObj); //Accessing the Json Object from ViewBag
    alert("Text is: " + model.Text);
</script> 

你所拥有的应该工作。这取决于您要设置的数据类型,即如果它是字符串值,则需要确保将其用引号引起来,例如

var val = '@ViewBag.ForSection';

如果是整数,则需要将其解析为一个即

var val = parseInt(@ViewBag.ForSection);

试试这个方法

<script type="text/javascript">

    function set(value) {
        return value;
    }

    alert(set(@Html.Raw(Json.Encode(Model.Message)))); // Message set from controller
    alert(set(@Html.Raw(Json.Encode(ViewBag.UrMessage))));

</script>

谢谢

使用单引号('):

var val = '@ViewBag.ForSection';
alert(val);

当你这样做时

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

您可能会得到一个JSON字符串,而不是一个JavaScript对象。

您需要将其解析为一个对象:

var model = JSON.parse(model); //or $.parseJSON() since if jQuery is included
console.log(model.Sections);
本文地址:http://jquery.askforanswer.com/ruhezaijiaobenbiaoqianzhonghuoqumodelhuoviewbagbianliang.html
文章标签: ,   ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!