CKEditor数据绑定在asp.net核心mvc中

时间:2016-12-07 08:25:03

标签: ckeditor asp.net-core-mvc

我已经创建了一个EditController,用于在asp.net核心项目中获取和编辑我的数据库内容。控制器如下:

[HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> Edit(MyObject model)
    {
        if (ModelState.IsValid)
        {
            await  _myObjectRepository.UpdateMsg(model);

            return RedirectToAction("Index");
        }
        return View();
    }

我使用以下脚本标记来引用ckeditor并将其保存在Edit.cshtml上。     

在表单标记内部,我已将以下代码行显示在编辑器中,并在编辑器中显示数据库中的数据。

<div class="form-group">
    <label asp-for="Body" class="col-sm-2 control-label"></label>
    <div class="col-sm-10">
       <textarea asp-for="Body"  id="editor1" name="editor1"></textarea>
    </div>
</div>

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

我从数据库向编辑器显示数据没问题。但是当我尝试更改编辑器中的文本时,数据库中不会出现任何文本。

所以在不使用编辑器的情况下测试了代码,即我只使用标签而不是CKEditor,使用通常的剃刀属性并且工作正常。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:6)

我相信你在MyObject类中有一个属性来存储CKEditor的内容。让我们假设&#34; ckEditorVar&#34;是存储ckeditor内容的属性。以下代码适合我。我希望它也适合你。

    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> Edit(MyObject model)
    {

        if (ModelState.IsValid)
        {
             await _myObjectRepository.UpdateMsg(new MyObject 
            {
                ckeditorVar = Request.Form["editor1"].ToString(),

             });

            return RedirectToAction("Index");
        }
        return View();
    }