将 CKEDITOR 的价值发布到 Asp.net Core 中的操作

top*_*ool 3 javascript asp.net-mvc editor ckeditor

我正在使用 CKEditor 4 并且我将把 ckeditor html 值发布到 Action 中。但是当我单击“提交”按钮并模型发布以执行操作时,ckeditor 值发布了空值。

看法 :

<form asp-controller="Book" asp-action="AddEditBook" id="addeditbook" data-ajax="true" 
  data-ajax-method="POST" data-ajax-update="#addeditbook" data-ajax-mode="replace">


<div class="modal-body form-horizontal">
    <div class="row">

        <div class="form-group">
            <label asp-for="BookName" class="col-lg-2 col-sm-2 control-label"></label>
            <div class="col-lg-6">
                <input asp-for="BookName" class="form-control" />
                <span asp-validation-for="BookName" class="text-danger"></span>
            </div>
        </div>

        <div class="form-group">
            <label asp-for="BookDescription" class="col-lg-2 col-sm-2 control-label"></label>
            <div class="col-lg-9">
                <textarea id="editor1" name="editor1" asp-for="BookDescription" class="form-control"></textarea>
                <span asp-validation-for="BookDescription" class="text-danger"></span>
            </div>

            <script type="text/javascript">
                CKEDITOR.replace('editor1');
            </script>
        </div>
    </div>
</div>


<input type="submit" value="submit"/>

}
Run Code Online (Sandbox Code Playgroud)

模型:

 public class AddEditBookViewModel
{
    [Key]
    public int BookId { get; set; }

    [Display(Name = "Book Name:")]
    [Required(ErrorMessage = "Enter Book Name")]
    public string BookName { get; set; }

    [Display(Name = "Book Description:")]
    [Required(ErrorMessage = "Enter Book Description")]
    public string BookDescription { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

控制器 :

   [HttpPost]
    public IActionResult AddEditBook(AddEditBookViewModel model)
    {
        if (ModelState.IsValid)
        {
                using (var db = _iServiceProvider.GetRequiredService<ApplicationDbContext>())
                {
                    Book bookModel = Mapper.Map<AddEditBookViewModel, Book>(model);
                    db.books.Add(bookModel);
                    db.SaveChanges();
                }
                return view("index");
        }
}
Run Code Online (Sandbox Code Playgroud)

我如何将 ckeditor html 值发布到操作以保存或编辑?

小智 5

表单回发其成功的表单控件的名称/值对,并且 ModelBinder 根据这些值绑定您的模型。您的模型包含一个名为 的属性BookDescription,但您已覆盖name由 TagHelper 生成的属性(即name="BookDescription"),并且给定的name="editor1"属性不是模型中属性的名称。

删除该name="editor1"属性,以便您输入的是

<textarea id="editor1" asp-for="BookDescription" class="form-control"></textarea>
Run Code Online (Sandbox Code Playgroud)

附带说明一下,TagHelper 也是id="BookDescription"默认生成的,也无需覆盖该属性。您还可以删除该id="editor1"属性,然后脚本将是

CKEDITOR.replace('BookDescription');
Run Code Online (Sandbox Code Playgroud)