Summernote and form submission in MVC c#

浪子不回头ぞ 提交于 2020-01-12 06:58:27

问题


I am using the summernote plugin for text box: http://summernote.org/#/getting-started#basic-api

This is the form I have using 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>

Now, In my controller, this is the code I have:

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

Now the problem is that textForLabelLanguage param is always null.

This happens because I have to pass $('#textForLabelLanguage').code(); into MVC when submiting the form but I have no idea how to do that!

How do I solve my problem?


回答1:


I found my solution to the problem. This is how I am making the controller get the correct information:

<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>

Basically, if I use a textarea with a name instead of an input or anything else, it works!

However, and be warned, even though this solution works, I then get a error in the controller saying:

A potentially dangerous Request.Form value was detected from the client

This happens because I am allowing HTML. But this is a problem for another question!




回答2:


Please, use [AllowHTML]

There's a good article on MSDN Request Validation in ASP.NET

"To disable request validation for a specific property, mark the property definition with the AllowHtml attribute:"

[AllowHtml]
public string Prop1 { get;  set; }



回答3:


similar to what was posted earlier you can use the HTML helper

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

instead of <textarea>



来源:https://stackoverflow.com/questions/29540502/summernote-and-form-submission-in-mvc-c-sharp

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!