Разорвать новую задачу Line - C # .NET MVC - PullRequest
1 голос
/ 10 мая 2011

Сегодня хороший день!Но ... :) У меня есть следующая проблема: у меня есть контроллер, который обновляет поле type_text в базе данных MySQL.Пользователь вводит текст в texarea, нажимает «Обновить» и, о чудо, текст публикуется в базе данных.Но без перерыва ...

В контроллере у меня есть:

[Authorize]
[HttpPost]
public string EditComment(FormCollection formValues)
{
    var Commenter = User.Identity.Name;
    Int64 id = Convert.ToInt64(Request.Form["id"]);

    string formValue = Request.Form["value"];
    formValue = formValue.Replace("\r\n", "<br/>").Replace("\r", "<br/>");

    comments updateCommnets = db.comments.SingleOrDefault(d => d.id == id && d.commenterName == Commenter);
    updateCommnets.comment = formValue;
    db.SaveChanges();

    return formValue;
}

Это сводит меня с ума на 2 дня ...

Может кто-нибудь помочь мне?Большое спасибо!

ОБНОВЛЕНО

  • Я использую jeditable для выполнения встроенного редактирования.Пример строки сообщения: value = Some + text% 0ASome2 + text2

Ответы [ 2 ]

6 голосов
/ 10 мая 2011

Я бы сохранил текст как есть в базе данных без преобразования \r\n в <br/>:

[Authorize]
[HttpPost]
public ActionResult EditComment(string value, long id)
{
    var commenter = User.Identity.Name;
    var updateCommnets = db.comments.SingleOrDefault(d => d.id == id && d.commenterName == commenter);
    updateCommnets.comment = value;
    db.SaveChanges();
    return Content(value, "text/plain");
}

Затем я написал бы собственный помощник HTML для форматирования значенийв представлении, если необходимо, чтобы показать эти комментарии.

public static MvcHtmlString FormatComment(this HtmlHelper html, string comment)
{
    if (string.IsNullOrEmpty(comment))
    {
        return MvcHtmlString.Empty;
    }
    var lines = comment
        .Split(
            new string[] { Environment.NewLine }, 
            StringSplitOptions.None
        )
        .Select(x => HttpUtility.HtmlEncode(x))
        .ToArray();
    return MvcHtmlString.Create(string.Join("<br/>", lines));
}

, а затем в представлении:

@Html.FormatComment(Model.Comment)
4 голосов
/ 10 мая 2011

Не преобразовывать текст, который отправляется в базу данных.Использование:

@MvcHtmlString.Create(value)

Вот руководство

...