2010-08-13 66 views
1

我正在MVC 2 .net 4網站上創建一個簡單的「網站新聞」功能。網站新聞文章保存在一個簡單的SQL數據庫中,實際上我是用Entity Framework Code First和compact sql組成的,包括colums articleID,articleDate articleSummary和articleDetail(model.ItemEntry,代碼如下)。 articleDetail是一個textarea,我想用TinyMce或其他一些所見即所得編輯器編輯,如果你有替代編輯建議或建議請這麼做,爲什麼。htmlencode TinyMce/textarea to sql MVC 2 .net 4

我正在尋找一種方法來讓文章中的文本通過textarea由TinyMce輸入,它可能包含html以及文本htmlencoded,因爲它被記錄到表格的行中。在我看來,這將是一個可能的配置選項,我沒有找到它。而通過htmlencoding,textarea可以繞過我在嘗試將TinyMce/textarea數據保存到sql時遇到的所有困難。

雖然我會用這個直播它主要是一種學習體驗。我想要學習如何做到這一點,我有點固執。否則,我只是使用textarea,並跳過這個簡單的應用程序的所見即所得。

雖然試圖用TinyyMce編寫簡單的文本,但我遇到了.net 4和requestvalidation的問題。看起來我不得不通過在網絡配置中放置<httpRuntime requestValidationMode="2.0" />來放鬆我的安全性並將[ValidateInput(false)]添加到我的控制器中創建發佈操作。我不想放鬆.net 4提供的安全性,現在還不知道如何去除TinyMce/textarea中的html。

在這一點上,我發現我真正想做的事情是htmlencode文本,因爲它可能有價值的文章中的一些HTML格式。博客文章和其他應用程序保存在SQL中的信息,最終會成爲html,他們如何做到這一點?

總結(一些)我的問題是

  • 是否存在的HTMLEncode其內容有任何所見即所得的編輯器?這樣我可以有存儲在sql中的htmlencoded html新聞文章。然後,我會試圖htmldecode顯示新聞文章時顯示。

交替

  • 如何可能我只是簡化條從TinyMCE的/ textarea的的HTML之前,我保存爲sql?

  • 是放寬requestValidationMode =「2.0」我唯一的解決方案?

研究資源我發現這方面的學習經驗很有幫助。

Ack!無法發佈他們,因爲這是我的第一篇文章。嘖嘖,我以爲我讀了常見問題解答,並且正在成爲一名優秀的Nerditquette人。我很喜歡在Live Writer中編寫它,並且在我的博客上發佈了here,其中包括我研究並找到的有用鏈接。

一些相關的源代碼片斷。

創建。ASPX

<script type="text/javascript"> 
tinyMCE.init({ 
    mode: "textareas", 
    theme: "simple" 
}); 

  <div class="editor-label"> 
      <%: Html.LabelFor(model => model.ItemEntry) %> 
     </div> 
     <div class="editor-field"> 
      <%: Html.TextAreaFor(model => model.ItemEntry) %> 
      <%: Html.ValidationMessageFor(model => model.ItemEntry) %> 
     </div> 

NewsController.cs

 // POST: /News/Create 

    [HttpPost] 
    // [ValidateInput(false)] 
    public ActionResult Create(Item item) 
    { 
     if (ModelState.IsValid) 
     { 
      siteNews.Items.Add(item); 
      siteNews.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 
      return View(item); 
    } 

回答

0
  • 你爲什麼要的HTMLEncode您的內容只是將其保存在數據庫中?這是無用的一步。
  • 如果您使用富文本編輯器,爲什麼要去掉html?如果只是想要文字,留在textarea。您可以將tinyMCE配置爲使用bbtags,但我只會將其用於不可信任的用戶。
  • 將您的requestValidationMode設置爲2.0是您可以如何讓您的代碼保存html。沒有什麼不妥。
+0

我的想法是通過htmlencode發佈之前,我可以繞過安全問題。 我正試圖學習如何處理有和沒有htmlencode的信息。 如果我將requestValidationMode設置爲2.0,那麼整個站點都不會刪除.net 4中的安全增強項嗎? – jeffa 2010-08-13 23:43:49

+0

在.net 4中,所有請求現在都已驗證(Web服務/ http模塊/處理程序)。因此,驗證在請求發生的早期發生,運行時永遠不會看到[ValidateInput(false)]屬性的操作。 – ZippyV 2010-08-14 08:17:48