我创建了一个 EditController 来获取和编辑 ASP.NET Core 项目中数据库的内容。 Controller 如下:
[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,使用通常的 Razor 属性,并且工作正常。我该如何解决这个问题?
最佳答案
我相信您在 MyObject 类中有一个属性来存储 CKEditor 的内容。假设“ckEditorVar”是存储 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();
}
关于asp.net core mvc 中的 CKEditor 数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41012516/