Tampaknya atribut ValidateAntiForgeryToken mencegah data diurai dengan benar ketika diteruskan ke MVC Controller, kode di bawah ini berfungsi ketika saya menghapus atribut ValidateAntiForgeryToken tetapi tidak berfungsi dengannya, semua parameter dalam tindakan pengontrol dilewatkan kecuali array terjemahan.

Mohon saran tentang cara melewatkan array objek saat menggunakan atribut ValidateAntiForgeryToken, apakah itu mungkin?

Ini kode saya my

C#

 [HttpPost]
 [ValidateAntiForgeryToken]
 public void AddComment( string code, string type, string ecomment, IEnumerable<CommentTranslation> translations) 
  {
            //do something later
   }

Komentar Terjemahan adalah

public class CommentTranslation
    {
        public string LangId { get; set; }
        public string LangName { get; set; }
        public string Translation { get; set; }
    }

Js

addComment: function (ecomment, type, translations) {


        var data = {           
                code: '',
                type: type,
                ecomment: ecomment,
                translations: translations
        };

        var url = 'CommentsAjax/AddComment';
        return comments.repository.postDataWithToken(data, url);
    },

  postDataWithToken: function (data, url) {
        
        return $.ajax({
            type: 'POST',
            traditional: true,
            contentType: 'application/x-www-form-urlencoded; charset=utf-8',
            data: comments.repository.addAntiForgeryToken(data),
            url: getServerPath() + url
        });
    }


addAntiForgeryToken: function (data) {
    var token = $('input[name="__RequestVerificationToken"]').val();
    data.__RequestVerificationToken = token;
    return data;
},
0
sarsnake 7 Juli 2020, 02:21

1 menjawab

Jawaban Terbaik

Akhirnya menggunakan FormCollection sehingga Anda dapat secara umum meneruskan apa pun ke dalam Controller.

0
sarsnake 9 Juli 2020, 20:23