MVC中的Summernote和表单提交c#

Fla*_*nix 11 c# forms asp.net-mvc summernote

我正在使用文本框的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>
Run Code Online (Sandbox Code Playgroud)

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

public ActionResult Create(UserInfo newInfo , [Bind(Prefix = "textForLabelLanguage")] string textForLabelLanguage)
{
    //logic here
}
Run Code Online (Sandbox Code Playgroud)

现在问题是textForLabelLanguageparam总是为null.

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

我该如何解决我的问题?

Fla*_*nix 13

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

<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>
Run Code Online (Sandbox Code Playgroud)

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

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

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

这是因为我允许HTML.但这是另一个问题的问题!

  • 更好的是:在右侧属性上使用AllowHtml (6认同)

Mar*_*ias 7

请用 [AllowHTML]

在ASP.NET中有一篇关于MSDN 请求验证的好文章

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

[AllowHtml]
public string Prop1 { get;  set; }
Run Code Online (Sandbox Code Playgroud)