【问题标题】:Summernote and form submission in MVC c#Summernote 和 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
  • 那不是输入框

标签: c# asp.net-mvc forms summernote


【解决方案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;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-14
      • 1970-01-01
      • 2015-07-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-12
      相关资源
      最近更新 更多