Редактор Markitup не загружает текст обратно
У меня есть пара методов действия редактирования:
[HttpGet]
public ActionResult Edit(Guid id) {
return View(this.session.Load<Article>(id));
}
[HttpPost, ValidateAntiForgeryToken]
public ActionResult Edit(Article article) {
if(ModelState.IsValid) {
article.ProblemContext = BBCode.ToHtml(article.ProblemContext);
article.AuthorId = this.userService.GetActiveDirectoryUserId(User.Identity.Name);
article.CreatedOn = DateTime.Now;
this.session.Store(article);
this.session.SaveChanges();
TempData["Message"] = String.Format("Article '{0}' was saved successfully", article.Title);
return RedirectToAction("Index", "Home", new { area = "" });
}
return View(article);
}
Все в порядке, за исключением того, что при редактировании записи нет контента, загруженного обратно в MarkitUp
Рецепт
Edit
вид выглядит так:
@using(Html.BeginForm("Edit", "Article", new { area = "" }, FormMethod.Post, new { enctype = "multipart/form-data" })) {
@Html.ValidationSummary()
@Html.AntiForgeryToken()
<fieldset>
<legend>Create/Edit</legend>
@Html.HiddenFor(model => model.Id)
<div class="editor-label">@Html.LabelFor(model => model.Title)</div>
<div class="editor-field">
@Html.EditorFor(model => model.Title)
</div>
<hr />
<div class="editor-field">
<textarea class="markitupEditor" cols="15" rows="10" name="ProblemContext"> </textarea>
</div>
<hr />
<input type="submit" value="Save" />
<input type="reset" value="Clear" />
</fieldset>
} @* using(Html.BeginForm("Edit", "Article", new { area = "" }, FormMethod.Post)) { *@
<script type="text/javascript">
$(function() {
$("#content textarea.markitupEditor").markItUp(mySettings);
});
</script>
@section Stylesheets {
<link href="@Url.Content("~/Scripts/MarkitUpEditor/skins/markitup/style.css")" rel="stylesheet" type="text/css" />
<link href="@Url.Content("~/Scripts/MarkitUpEditor/sets/bbcode/style.css")" rel="stylesheet" type="text/css" />
}
@section Javascript {
<script src="@Url.Content("~/Scripts/MarkitUpEditor/jquery.markitup.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MarkitUpEditor/sets/bbcode/set.js")" type="text/javascript"></script>
}
Что я сделал не так?
1 ответ
Решение
Там нет контента в textarea
потому что вы не указали содержание в своей разметке:
<textarea class="markitupEditor" cols="15" rows="10" name="ProblemContext">
</textarea>
Либо поместите туда содержимое явно:
<textarea class="markitupEditor" cols="15" rows="10" name="ProblemContext">
@Html.Raw(Model.ProblemContext)
</textarea>
Или используйте встроенный помощник TextAreaFor:
<div class="editor-field">
@Html.TextAreaFor(model => model.ProblemContext,
columns: 15, rows: 10, htmlAttributes: new { @class = "markitupEditor" } )
</div>