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

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

使用 JavaScript 和 ViewModel 在 Asp.NET MVC 5

使用 JavaScript 和 ViewModel 在 Asp.NET MVC 5

冉冉說 2021-11-21 10:01:39
基本問題是這樣的。我正在使用 CKEditor 作為各種博客文章的界面。CKEditor 獲取字數,但我必須使用一些客戶端 JavaScript 來清理它。我想將字數傳遞到數據庫中,這樣我就知道每篇文章有多少字。我有一個帖子的視圖模型:public class NewStoryViewModel{    [Required]    public string Title { get; set; }    [Required]    public string Content { get; set; }    [Required]    public int Genre { get; set; }    public IEnumerable<Genre> Genres { get; set; }    [Required]    public int StoryType { get; set; }    public IEnumerable<StoryType> StoryTypes { get; set; }    public int WordCount { get; set; }    [Required]    public int StoryAgeRange { get; set; }    public IEnumerable<StoryAgeRange> StoryAgeRanges { get; set; }    [Required]    public int Visibility { get; set; }    public IEnumerable<Visibility> Visibilities { get; set; }}以及帖子的控制器:[Authorize][HttpPost][ValidateAntiForgeryToken][ValidateInput(false)]public ActionResult New (NewStoryViewModel viewModel){    //confirm form data is valid    if (ModelState.IsValid)    {        //create new story object        var newStory = new Story        {            AuthorId = User.Identity.GetUserId(),            Title = viewModel.Title,            Content = viewModel.Content,            GenreId = viewModel.Genre,            StoryTypeId = viewModel.StoryType,            StoryAgeRangeId = viewModel.StoryAgeRange,            VisibilityId = viewModel.Visibility,            CreatedAt = DateTime.Now,            WordCount = viewModel.WordCount        };        //add new story to db        dbContext.Stories.Add(newStory);        //save db        dbContext.SaveChanges();        return RedirectToAction("Index", "Story");    }    else    {        return View(viewModel);    }}
查看完整描述

2 回答

?
肥皂起泡泡

TA貢獻1829條經驗 獲得超6個贊

您在評論中提到您遇到了 500 內部服務器錯誤,我猜這是在您嘗試了 Shyju 的修復無效 JSON 的建議之后。我的猜測是您現在甚至無法調試控制器操作,因為它期望將防偽令牌傳遞給它,但您沒有在 POST 請求的正文中發送該令牌。


要解決這個問題,試試這個:


var form = // selector for your form

var token = $('input[name="__RequestVerificationToken"]', form).val();


$.ajax({

  url: "/story/new",

  type: 'POST',

  data: {

      __RequestVerificationToken: token,

      WordCount: finalWordCount

  },

  success: function (data) {

      console.log("Success")

  },

  error: function (error) {

      console.log("error is " + error);

  }

});

這應該有望修復驗證錯誤,讓您至少可以執行操作。


查看完整回答
反對 回復 2021-11-21
?
Smart貓小萌

TA貢獻1911條經驗 獲得超7個贊

MVC 應用程序可能需要 json 格式的請求正文,因為這是 asp.net MVC 的默認配置。因此,在將數據發布到服務器之前,您需要將模型字符串化為適當的 json。


像這樣試試


var data = JSON.stringify({WordCount: finalWordCount});

$.ajax({

     url: "/story/new",

     type: 'POST',

      data: data,

      success: function (data) {

          console.log("Success")

      },

      error: function (error) {

          console.log("error is " + error);

      }

    })


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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