2013-08-21 6 views
0

Я пытаюсь сохранить содержимое из редактора текстового редактора (ckeditor в моем случае) в мое поле blob в моей базе данных.Сохранение текстового редактора содержимого в поле blob в базе данных mysql

Это мой ViewModel:

public class ArticleViewModel 
{ 
    [Required] 
    [Display(Name = "Title")] 
    public string Title { get; set; } 

    [Required] 
    [Display(Name = "Description")] 
    public string Description { get; set; } 

    [Required] 
    [Display(Name = "Article Body")] 
    public string ArticleBody { get; set; } 

} 

Статья Тело мое поле форматированного текста, как это, на мой взгляд:

<div class="editor-label"> 
    @Html.LabelFor(model => model.ArticleBody) 
</div> 
<div class="editor-field"> 
    @Html.TextAreaFor(model => model.ArticleBody, new { placeholder = "Type the content of the article", @class = "ckeditor" }) 
    @Html.ValidationMessageFor(model => model.ArticleBody, string.Empty) 
</div> 

В моем действии в моем контроллере:

[HttpPost] 
    public ActionResult Create(ArticleViewModel model) 
    { 
     if (ModelState.IsValid) 
     { 
      try 
      { 
       // Get the userID who created the article 
       User usr = userrepo.FindByUsername(User.Identity.Name); 
       model.UsernameID = usr.user_id; 

       repository.AddArticle(model.Title, model.Description, model.ArticleBody); 
      } 
      catch (ArgumentException ae) 
      { 
       ModelState.AddModelError("", ae.Message); 
      } 

      return RedirectToAction("Index"); 

     } 

     return View(model); 
    } 

Но в моем репозитории я получаю: Cannot convert type 'string' to 'byte[]'

Repository:

public void AddArticle(string Title, string Description, string ArticleBody) 
    { 
     item Item = new item() 
     { 
      item_title = Title, 
      item_description = Description, 
      article_body = ArticleBody, 
      item_createddate = DateTime.Now, 
      item_approved = false, 
      user_id = 1, 
      district_id = 2, 
      link = "", 
      type = GetType("Article") 
     }; 

     try 
     { 
      AddItem(Item); 
     } 

     catch (ArgumentException ae) 
     { 
      throw ae; 
     } 
     catch (Exception) 
     { 
      throw new ArgumentException("The authentication provider returned an error. Please verify your entry and try again. " + 
       "If the problem persists, please contact your system administrator."); 
     } 

     Save(); 
     // Immediately persist the User data 

    } 

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

ответ

1

Должно быть Repository формат метод как

Public void AddArticle(string title, string Description, string ArticleBody) 
{ 
//logic 
} 

Я думаю, что ваш метод хранилища имеют тип байт для любого одного аргумента. Проверьте это как мой формат метода.

Edit:

Проверьте тип данных article_body столбца в базе данных? его следует мне Nvarchar(Max).

+0

Обновлено начало сообщения. Да, это строка ArticleBody, но когда я пытаюсь создать новый элемент, он говорит «Невозможно преобразовать в байты» – nielsv

+0

. Какой тип данных столбца article_body в вашей базе данных? –

+0

В моей базе данных mysql это «BLOB», но у меня есть модель в моем проекте VB, где тип данных двоичный, потому что вы не можете выбрать «BLOB» .. – nielsv