亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將數據從控制器傳遞到 .Net Core 中的 javascript

將數據從控制器傳遞到 .Net Core 中的 javascript

qq_遁去的一_1 2021-12-23 19:42:00
我想將數據從控制器傳遞到 javascript 文件。這是我的模型字段        [Key]        public int id_field { get; set; }        public string name { get; set;         public int field_type { get; set; }這是我的游戲模型 public class GameModel    {        public List<Board> board { get; set; }        public List<Player> player_list { get; set; }        public List<Dice> dices_value { get; set; }        public List<Field> field_list { get; set; }    }這是javascript代碼:<script>            function setup() {                createCanvas(880, 880);                background(255);                for (var i = 0; i < 11; i++) {                    var posX = map(i, 0, 11, 0, width);                    var posY = map(i, 0, 11, 0, height);                    var posX2 = map(i, 0, 11, 0, width);                    var posY2 = map(i, 0, 11, height, 0);                    var tileRowUp = new Tile(posX, 0, 80, 80);                    if (i == 1) {                [email protected](Json.Serialize(Model.field_list[1].name));                    }                      if (i == 2) {                [email protected](Json.Serialize(Model.field_list[2].name));                    }                       tileRowUp.show();                        var tileColLeft = new Tile(0, posY, 80, 80);                      if (i == 0) {                          [email protected](Json.Serialize(Model.field_list[0].name));                    }                       tileColLeft.show();                        var tileRowdown = new Tile(posX2, height - 80, 80, 80);                       tileRowdown.show();                        var tileColRight = new Tile(width - 80, posY2, 80, 80);                       tileColRight.show();                    }使用 [email protected](Json.Serialize(Model.field_list[0].name));I 將數據分配給對象名稱 tileColLeft。在這里我混合了 js 代碼和 HTML,我不想這樣做。這項工作,它顯示我從數據庫中的數據。這是結果 https://imgur.com/FoeZZKL另外腳本 javascript 現在在我的 .cshtml 文件中。我必須使這個 js 代碼成為外部文件。我想過使用 JsonResult 但我不明白我該怎么做。有人有什么建議嗎?
查看完整描述

2 回答

?
叮當貓咪

TA貢獻1776條經驗 獲得超12個贊

您可以在 cshtml- 中使用以下內容


@section Scripts{

<script>

var [email protected](Json.Serialize(Model));

setup(objModel);

</script>

}


現在您可以在外部 JS 文件中定義 setup 函數,并且您還需要進行必要的更改以使用函數參數,而不是像這樣在函數中使用 @Html.Raw。


function setup(modelObj) {

    createCanvas(880, 880);

    background(255);

    for (var i = 0; i < 11; i++) {


        var posX = map(i, 0, 11, 0, width);

        var posY = map(i, 0, 11, 0, height);

        var posX2 = map(i, 0, 11, 0, width);

        var posY2 = map(i, 0, 11, height, 0);



        var tileRowUp = new Tile(posX, 0, 80, 80);

        if (i == 1) {

            tileRowUp.nameOfField =modelObj.field_list[1].name;

        }

        if (i == 2) {

            tileRowUp.nameOfField =modelObj.field_list[2].name;

        }




        tileRowUp.show();


        var tileColLeft = new Tile(0, posY, 80, 80);

        if (i == 0) {

            tileColLeft.nameOfField =modelObj.field_list[0].name;

        }



        tileColLeft.show();



        var tileRowdown = new Tile(posX2, height - 80, 80, 80);


        tileRowdown.show();


        var tileColRight = new Tile(width - 80, posY2, 80, 80);


        tileColRight.show();



    }

    var mysteriousCard1 = new Tile(170, 190, 100, 100);



    mysteriousCard1.show();


    var mysteriousCard2 = new Tile(570, 490, 100, 100);

    mysteriousCard2.show();

    var dice = new Tile(390, 390, 50, 50);

    dice.show();


}


class Tile {



    constructor(x, y, lar, alt, id_Field, nameOfField, TypeOfField) {


        this.x = x;

        this.y = y;

        this.lar = lar;

        this.alt = alt;

        this.id_Field = id_Field;

        this.nameOfField = nameOfField;

        this.TypeOfField = TypeOfField;


    }


    show() {

        //noStroke();

        rect(this.x, this.y, this.lar, this.alt);

        text(this.nameOfField, this.x + 10, this.y + 10);



    }




}


查看完整回答
反對 回復 2021-12-23
?
侃侃無極

TA貢獻2051條經驗 獲得超10個贊

我使用 Json 和 ajax 從數據庫中獲取數據。這是我在 js 中的代碼




    var fields = [];

        for (var i = 0; i < 40; i++) {

        fields[i] = { id_Field: 0, nameOfField2: 'what', TypeOfField: 0 }

}

$(document).ready(function () {

    //Call EmpDetails jsonResult Method

    $.getJSON("Boards/Json",

        function (json) {

            var tr;

            //Append each row to html table

            for (var i = 0; i < json.length; i++) {

                fields[i].nameOfField2 = json[i].name;

                fields[i].id_Field = json[i].id_field;

                fields[i].TypeOfField = json[i].field_type;

                tr = $('<tr/>');

                tr.append("<td>" + fields[i].id_Field + "</td>");

                tr.append("<td>" + fields[i].nameOfField2 + "</td>");

                tr.append("<td>" + fields[i].TypeOfField + "</td>");

                $('table').append(tr);

            }

        });

});



    function setup() {

        createCanvas(880, 880);

        background(255);


          for (var i = 0; i < 11; i++) {


                var posX = map(i, 0, 11, 0, width);

                var posY = map(i, 0, 11, 0, height);

                var posX2 = map(i, 0, 11, 0, width);

                var posY2 = map(i, 0, 11, height, 0);


            var tileRowUp = new Tile(posX, 0, 80, 80);

                if (i == 1) {

                    tileRowUp.nameOfField = fields[i].nameOfField2;

                }







                 //   tileRowUp[2].nameOfField = fields[2].nameOfField2;




        tileRowUp.show();







    var tileColLeft = new Tile(0, posY, 80, 80);




    tileColLeft.show();



    var tileRowdown = new Tile(posX2, height - 80, 80, 80);


    tileRowdown.show();


    var tileColRight = new Tile(width - 80, posY2, 80, 80);


    tileColRight.show();



}

var mysteriousCard1 = new Tile(170, 190, 100, 100);



mysteriousCard1.show();


var mysteriousCard2 = new Tile(570, 490, 100, 100);

mysteriousCard2.show();

var dice = new Tile(390, 390, 50, 50);

dice.show();


}








    class Tile {



        constructor(x, y, lar, alt, id_Field, nameOfField, TypeOfField) {


    this.x = x;

    this.y = y;

    this.lar = lar;

    this.alt = alt;

    this.id_Field = id_Field;

    this.nameOfField = nameOfField;

    this.TypeOfField = TypeOfField;


    }


    show() {

        //noStroke();

        rect(this.x, this.y, this.lar, this.alt);

    text(this.nameOfField, this.x + 10, this.y + 10);



    }




    }





這段代碼


tr = $('<tr/>');

                tr.append("<td>" + fields[i].id_Field + "</td>");

                tr.append("<td>" + fields[i].nameOfField2 + "</td>");

                tr.append("<td>" + fields[i].TypeOfField + "</td>");

                $('table').append(tr);

向我顯示列和行中的數據,它可以工作,但現在這是我的問題


  tileRowUp.nameOfField = fields[i].nameOfField2;


這不會將數據分配給tileRowUp.nameOfField,當我顯示它時,我看到這個 https://imgur.com/rvxgZiu 它就像fields[i].nameOfField2具有相同的默認值......看起來字段 [] 值是本地的,只有在這里:


 //Append each row to html table

            for (var i = 0; i < json.length; i++) {

                fields[i].nameOfField2 = json[i].name;

                fields[i].id_Field = json[i].id_field;

                fields[i].TypeOfField = json[i].field_type;

                tr = $('<tr/>');

                tr.append("<td>" + fields[i].id_Field + "</td>");

                tr.append("<td>" + fields[i].nameOfField2 + "</td>");

                tr.append("<td>" + fields[i].TypeOfField + "</td>");

                $('table').append(tr);

            }

有人有一些想法我做錯了什么?


查看完整回答
反對 回復 2021-12-23
  • 2 回答
  • 0 關注
  • 176 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號