2012-05-08 66 views
1

在Asp.Net MVC3中,我是新的,我試圖使用CKEditor。但無法得到我輸入的文本,然後我推送提交。無法從CKEditor中獲取文本MVC3

筆者認爲:

<form method=post action="@Url.Action("Description")"> 
    <textarea class="ckeditor" id="editor1" rows="10" name="Details">@Resources.Resources.DescriptionSampleText</textarea> 
    <input type="submit" /> 
</form> 

而且控制器有我需要的文字:

[HttpPost] 
public ActionResult Description(string textdetails) 
{ 
    //Doing something with the text 
    return RedirectToAction("Create", "Project", new { text = textdetails}); 
} 

我在做什麼錯?

回答

2

您的問題有三種解決方案。我會開始直接解決它(兩種方式),但是,我認爲這不是最好的方法。無論如何,稍後再說。

ASP.NET MVC(3)作品很多約定爲主。它會奇蹟般地將請求中的值等分配給參數和其他值。當然,這些約定顯然是基於你的參數名稱。你必須確保你的名字匹配(如你現在可能知道的,這將是一個難以維繫的)。

的快速解決方案是命名視圖中的相同,您的HttpPost行動參數的文本區域。您的查看代碼如下所示:

<form method=post action="@Url.Action("Description")"> 
    <textarea class="ckeditor" id="editor1" rows="10" name="Textdetails">@Resources.Resources.DescriptionSampleText</textarea> 
    <input type="submit" /> 
</form> 

這應該有效。注意:我現在沒有對自己進行測試,不過很多初學者指南都是這樣做的,所以我認爲這是可行的。無論如何,我真的不喜歡這個解決方案,因爲它確實是一個地獄(重構等不會很容易)。

第二種解決方案是使用一個FormCollection。您將此作爲HttpPost操作的參數,然後您可以通過索引訪問您的值。有關示例和更多信息,可以查看此SO帖子:https://stackoverflow.com/a/5088493/578843

最後溶液(我喜歡)是創建一個視圖模型。我建議你閱讀本指南(http://www.asp.net/mvc/tutorials/getting-started-with-aspnet-mvc3/cs/examining-the-edit-methods-and-edit-view),瞭解如何正確編輯頁面等。

而最後一件事,如果你想提交HTML作爲內容,你就必須要麼禁用保存ASP.NET的守衛或註釋添加到您的方法(或類)。請不要禁用保存警告(它會檢查輸入的HTML等),只有在需要時禁用它註釋。您可以將ValidateInput屬性(MSDN link)設置爲false。例如:

[HttpPost] 
[ValidateInput(false)] 
public ActionResult Description(string textdetails) 
{ 
    //Doing something with the text 
    return RedirectToAction("Create", "Project", new { text = textdetails}); 
}