web-dev-qa-db-ja.com

スクリプトタグでモデル変数またはビューバッグ変数を取得する方法

Vs'12 asp.net C#MVC4-Int.Appl.Template EF Code First

これが私の非常にシンプルな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);
18

この方法で、Jsonまたはその他の変数を提供できます。

1)コントローラーの例では、Json.NETJsonViewBagを提供します:

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> 
23
Fals

あなたが持っているものが動作するはずです。設定するデータのタイプによって異なります。つまり、文字列値の場合は、引用符で囲む必要があります。

var val = '@ViewBag.ForSection';

整数の場合、parse it as one one.

var val = parseInt(@ViewBag.ForSection);
22
James

この方法を試してください

<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>

ありがとう

4
Thas

単一引用符('):

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

これをしているとき

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

JavaScriptオブジェクトではなくJSON文字列を取得している可能性があります。

オブジェクトに解析する必要があります:

var model = JSON.parse(model); //or $.parseJSON() since if jQuery is included
console.log(model.Sections);
0
Johan