CKEDITOR MVC не удалось сохранить и просмотреть - PullRequest
0 голосов
/ 22 апреля 2020


У меня есть следующий контроллер:

[HttpPost]
[ValidateInput(false)]
public ActionResult UpdateActivity(string HistoryId, string Review, string ActivityId)
        {
            SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["myContext"].ToString());
            SqlCommand cmd = new SqlCommand("UPDATE ActivityHistory SET Review= @Review WHERE HistoryId = @HistoryId", con);
            cmd.CommandType = CommandType.Text;
            cmd.Parameters.AddWithValue("@HistoryId", HistoryId);
            string editorContents = Request.Form["Review"];
            cmd.Parameters.AddWithValue("@Review", editorContents.ToString());
            con.Open();
            int i = cmd.ExecuteNonQuery();
            con.Close();
            return RedirectToAction("Create", new { id = ActivityId });
        }

public List<ActivityHistory> GetActivityHistory()
    {
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["myContext"].ToString());
        List<ActivityHistory> model = new List<ActivityHistory>();
        SqlCommand cmd = new SqlCommand("SELECT * FROM ActivityHistory", con);
        cmd.CommandType = CommandType.Text;
        SqlDataAdapter sd = new SqlDataAdapter(cmd);
        DataTable dt = new DataTable();
        con.Open();
        sd.Fill(dt);
        con.Close();
        foreach (DataRow dr in dt.Rows)
        {
            model.Add(
                new ActivityHistory
                {
                    HistoryId = Convert.ToInt32(dr["HistoryId"]),
                    ActivityId = Convert.ToInt32(dr["ActivityId"]),
                    Review = Convert.ToString(dr["Review"])
                });
        }
        return model;
    }

    public JsonResult EditRecord(int? id)
    {
        var model = GetActivityHistory().Find(x => x.HistoryId.Equals(id));
        return Json(model, JsonRequestBehavior.AllowGet);
    }

Тогда у меня есть следующее представление:

<table id="Table2" class="table">
            <thead>
                <tr>
                    <th style="display:none;">HistoryId</th>
                    <th style="display:none;">ActivityId</th>
                    <th>Review</th>
                    <th></th>
                </tr>
            </thead>
            <tbody>
                    @foreach (var item in Model.ActivityHistoryList)
                    {
                        <tr>
                            <td>@Html.DisplayFor(modelItem => item.HistoryId)</td>
                            <td>@Html.DisplayFor(modelItem => item.ActivityId)</td>
                            <td>@Html.DisplayFor(modelItem => item.Review)</td>
                            <td><a onclick="GetDetails(@item.HistoryId); return false;" href="">Review</a></td>
                        </tr>
                    }
            </tbody>
        </table>


<div class="modal-dialog modal-lg" role="document">
    @using (Html.BeginForm("UpdateActivity", "ActivityHistories", FormMethod.Post))
    {
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                <h4 class="modal-title">Review</h4>
            </div>

            <div class="modal-body">

                <div class="row">
                    <div class="col-md-12">
                        <div class="form-group">
                            <input type="hidden" id="hfId" name="HistoryId">
                            <input type="hidden" id="txtActivityId" name="ActivityId" />
                            <input type="text" class="form-control" id="txtReview" name="Review" placeholder="">
                            <script>
                                CKEDITOR.replace("txtReview", { htmlEncodeOutput: true });
                            </script>
                        </div>
                    </div>
                </div>
            </div>

            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                <button type="submit" class="btn btn-primary">Update</button>
            </div>
        </div>
    }
</div>

<script>
CKEDITOR.replace("txtReview", { htmlEncodeOutput: true });

function GetDetails(id) {
    $.ajax({
        url: "/ActivityHistories/EditRecord/" + id,
        type: "GET",
        contentType: "application/json;charset=UTF-8",
        dataType: "json",
        success: function (response) {
            $('#hfId').val(response.HistoryId);
            $('#txtReview').val(response.Review);
            $('#txtActivityId').val(response.ActivityId);
            $('#modal-Update').modal('show');
        },
        error: function (response) {
            alert(response.responseText);
        }
    });

    return false;
}
</script>

---
Таким образом, сценарий, когда я нажимаю Review ссылку, он покажет модальный. Внутри модального текста есть входной текст в формате CKEDITOR.

  1. Если не использовать CKEDITOR, он сохраняется в базе данных, когда я нажимаю кнопку Обновить на модальном, успех.
  2. Если используется CKEDITOR, он не сохраняется в базе данных, когда я нажимаю кнопку «Обновить» в модальном режиме. Кроме того, предыдущий обзор (если существует) не отображается на CKEDITOR. Если указан только тип ввода, он показан.

Мой вопрос:
1. Как сохранить текст на CKEDITOR и отправить его в базу данных таблицы?
2 Как я могу получить текст, если в базе данных таблицы существует Review?

Действительно признателен.
Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...