无法从CKEditor MVC3获取文本

时间:2012-05-08 20:00:30

标签: c# asp.net-mvc-3

我是Asp.Net MVC3的新手,我正在尝试使用CKEditor。但是无法获取我输入的文本然后我推送提交。

我的观点:

<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});
}

我做错了什么?

1 个答案:

答案 0 :(得分:2)

您的问题有三种解决方案。我将开始直接解决它(两种方式),但是,在我看来,这不是最好的方法。无论如何,稍后会有更多相关内容。

ASP.NET MVC(3)基于约定工作。它将神奇地从请求到参数等分配值等。当然,这些约定显然基于参数的名称。你必须确保你的名字匹配(正如你现在可能知道的那样,这将是一个难以维护的事情)。

快速解决方案是在视图中将您的textarea命名为与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

最后一个解决方案(我更喜欢)是创建一个ViewModel。我建议您阅读本指南(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});
}