Summernote 和 MVC c# 中的表单提交

Posted

技术标签:

【中文标题】Summernote 和 MVC c# 中的表单提交【英文标题】:Summernote and form submission in MVC c# 【发布时间】:2015-06-14 22:29:28 【问题描述】:

我正在为文本框使用 Summernote 插件: http://summernote.org/#/getting-started#basic-api

这是我使用summmernote的表格:

<div class="modal-body" style="max-height: 600px">
    @using (html.BeginForm())
    
        @Html.ValidationSummary(true)
        <fieldset class="form-horizontal">
            <div id="textForLabelLanguage"></div>
            <button type="submit" class="btn btn-primary">Save changes</button>
            @Html.ActionLink("Cancel", "Index", null, new  @class = "btn " )
        </fieldset>
    
</div>

<script type="text/javascript">
    $(document).ready(function () 
        $('#textForLabelLanguage').summernote();
    );
</script>

现在,在我的控制器中,这是我拥有的代码:

public ActionResult Create(UserInfo newInfo , [Bind(Prefix = "textForLabelLanguage")] string textForLabelLanguage)

    //logic here

现在的问题是textForLabelLanguage 参数始终为空。

发生这种情况是因为我在提交表单时必须将 $('#textForLabelLanguage').code(); 传递给 MVC,但我不知道该怎么做!

我该如何解决我的问题?

【问题讨论】:

包含 html 的表单元素在哪里? 就在javascript之前。那就是使用 mvc 表单生成的 HTML。 我是说输入框? @DanielA.White:``。就是这个。然后 JS 完成剩下的工作。这一切都在summernote文档中:D 那不是输入框 【参考方案1】:

我找到了解决问题的方法。这就是我让控制器获取正确信息的方式:

<div class="modal-body" style="max-height: 600px">
    @using (Html.BeginForm())
    
        @Html.ValidationSummary(true)
        <fieldset class="form-horizontal">
            <textarea name="textForLabelLanguage" id="textForLabelLanguage" />
            <button type="submit" class="btn btn-primary">Save changes</button>
            @Html.ActionLink("Cancel", "Index", null, new  @class = "btn " )
        </fieldset>
    
</div>

<script type="text/javascript">
    $(document).ready(function () 
        $('#textForLabelLanguage').summernote();
    );
</script>

基本上,如果我使用带有名称的文本区域而不是输入或其他任何东西,它就可以工作!

但是,请注意,即使此解决方案有效,我也会在控制器中收到错误消息:

从客户端检测到有潜在危险的 Request.Form 值

发生这种情况是因为我允许使用 HTML。但这是另一个问题的问题!

【讨论】:

仅供参考 [ValidateInput(false)] 允许将 HTML 传递给控制器​​操作【参考方案2】:

请使用[AllowHTML]

MSDN 上有一篇不错的文章 Request Validation in ASP.NET

"要禁用特定属性的请求验证,请使用 AllowHtml 属性标记属性定义:"

[AllowHtml]
public string Prop1  get;  set; 

【讨论】:

【参考方案3】:

类似于之前发布的内容,您可以使用 HTML 帮助器

@HTML.TextAreaFor( m=> m.text, new @id = "textFor*Model*")

而不是&lt;textarea&gt;

【讨论】:

以上是关于Summernote 和 MVC c# 中的表单提交的主要内容,如果未能解决你的问题,请参考以下文章

提交summernote表单时sql中的特殊字符错误

在mvc中,使用summernote编辑器,我想将内容字符串和html的数据发送到控制器

asp.net mvc视图中的C#复选框事件不在表单内

MVC 5 项目中缺少图标

Summernote 将“文件”字段添加到 POST

带有控制器 MVC c# 的部分视图