将字符串转换为 html 字符串时,Razor Ajax 表单未提交

Razor Ajax form not submitting when converting string to html string

我是剃须刀和显示模板的新手,所以请纠正我的错误。我正在处理一个包含 HTML 的字符串。如果我尝试 converting it directly to a HtmlString,我的 Ajax 表单将拒绝提交。作为一种解决方法,我尝试使用显示模板来实现如下目标:

我有一个 ajax 形式的部分视图:

MyPartialView.cshtml

@model IEnumerable<MyProject.Areas.MyArea.Models.MyComment>

@using (Ajax.BeginForm("ActionThatHandlesMulipleSubmits", null,
new AjaxOptions
{
    HttpMethod = "POST", // HttpPost
    InsertionMode = InsertionMode.Replace, // empty the target first
    UpdateTargetId = "commentTbl" // place content within #commentTbl
}, new { @class = "form-inline" }))
{
<div class="ibox float-e-margins">
    <div class="ibox-title">...</div>
    <div class="ibox-content">
        <div class="table-responsive">
            <table id="dataTables-comments">
                <thead>...</thead>
                <tbody>
                    @{int i = 0;}
                    @foreach (var myModel in Model)
                    {
                        <tr>
                            <td>
                               <div id="summernote_@i" onclick="loadRichTextEditor(@i);">@Html.DisplayFor(modelItem => myModel.myString, "HtmlString")
                            </td>
                            <td>
                                <button type="submit" id="save_@i" class="btn   btn-primary" name="Save" value='submitAction'>Save</button>
                                <button type="submit" id="delete_@i" class="btn   btn-primary" name="Delete" value='submitAction'>Delete</button>
                            </td>
                        </tr> i++;
                    }
                </tbody>
            </table>
        </div>
    </div>
</div>
}

我的 @foreach 循环包含这个

 @Html.DisplayFor(modelItem => myModel.myString, "HtmlString")

我的 DisplayTemplate 包含这个

HtmlString.cshtml

@model String

@{
    @Html.Raw(Model)
}

所以如果 myString = "<ul><li>my text</li></ul>"

我希望我的 ajax 表单显示

现在文本显示正确,但表单拒绝提交。如果我正常显示字符串,表单将毫无问题地提交。请帮助我做错了什么。

更新:下面是呈现的HTML表单源

所以事实证明这与我的视图无关,而是与控制器有关。根据我的理解,由于我将 HTML 发送回服务器,这导致了问题。我添加了

[ValidateInput(false)]

添加到控制器中的 Action 中,现在可以完美运行了。所以我的控制器看起来像这样:

[HttpPost]
[ValidateInput(false)]
public void ActionThatHandlesMultipleSubmits(MyComment mycomment, String submitAction)