Summernote and form submission in MVC c#

Flame_Phoenix picture Flame_Phoenix · Apr 9, 2015 · Viewed 15.4k times · Source

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?

Answer

Flame_Phoenix picture Flame_Phoenix · Apr 10, 2015

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!