0

ラジオボタンの選択によって切り替えられるビュー内に 3 つの部分ビューがあります。各部分ビューには独自の送信入力があり、2 つの部分ビューには tinyMCE テキストエリアが含まれています。tinyMCE テキストエリアを含むパーシャルが 1 つしかないときは、.triggerSave() を使用してそのテキストエリアを検証することができましたが、2 つ目の tinyMCE テキストエリアを追加したので、tinyMCE テキストエリアのいずれも渡すことができません。検証。

ここSOで同様の質問にある解決策の多くを試しましたが、これらのテキストエリアを検証に合格させることに成功していません。

最初のパーシャルの tinyMCE 関連コードは次のとおりです。

<script type="text/javascript">
$(document).ready(function () {
    tinyMCE.init({
        mode: "specific_textareas",
        editor_selector: "mceEditorForAddRow",
        theme: "simple",
        width: "500",
        height: "300"
    });
});

 @using(Html.BeginForm("_AddSchemaRow","Database_Schema")
{
@Html.ValidationSummary(true)
    <script type="text/javascript">
    $("#CreateRow").click(function () {
        tinyMCE.triggerSave();
    });
</script>
<table>
....
....
            <tr>
            <td>
                @Html.LabelFor(model => model.SchemaElement)
            </td>
            <td>
                @Html.TextAreaFor(model => model.SchemaElement, new { @class = "mceEditorForAddRow" })
                @Html.ValidationMessageFor(model => model.SchemaElement)
            </td>
        </tr>
....
....
</table>
<p>
        <input id="CreateRow" type="submit" value="Create" />
    </p>
}

この最初のパーシャルに対するコントローラーのアクションは次のとおりです。

        public ActionResult _AddSchemaRow(int id)
    {
        SchemaRow schemaRow = new SchemaRow();
        schemaRow.DatabaseSchemaID = id;
        schemaRow.SchemaIndex = DatabaseSchema.GetSchemaHeadersByDatabaseSchemaID(id).Count() + 1;
        return PartialView(schemaRow);
    }

この最初のパーシャルに対するコントローラーの POST アクションは次のとおりです。

        [HttpPost]
    [ValidateInput(false)]
    public ActionResult _AddSchemaRow(SchemaRow schemaRow)
    {
        if (ModelState.IsValid)
        {
            DatabaseSchemaViewModel vm = new DatabaseSchemaViewModel(DatabaseSchema.GetDatabaseSchemaByID(schemaRow.DatabaseSchemaID));
            vm.SchemaRowsAndHeaders = DatabaseSchemaViewModel.GetSchemaRowsAndHeadersBySchemaID(schemaRow.DatabaseSchemaID);
            if (SchemaRow.Create_SchemaRow(schemaRow))
            {
                return RedirectToAction("Edit", new { id = schemaRow.DatabaseSchemaID });
            }
            else
                return PartialView(schemaRow);
        }
        else
            return PartialView(schemaRow);
    }

2 番目のパーシャルは、送信入力 ID が「CreateSchemaHeader」であることを含め、該当するすべてのフィールドに「SchemaRow」ではなく「SchemaHeader」が含まれていることを除いて、上記の最初のパーシャルと同じように設定されます。サンプル コードで問題を十分に説明できると思います。必要に応じて、他のパーシャルのコードを追加できます。解決策を見つけるための助けを前もって感謝します。

4

1 に答える 1

0

私はついにそれを理解することができました。解決策は、ポストバックを引き起こす入力の後にクリック機能を追加することでした。

例:

<p>
    <input id="CreateRow" type="submit" value="Create" />
</p>
    <script type="text/javascript">
        $("#CreateRow").click(function () {
            tinyMCE.triggerSave();
        });
    </script>
于 2013-03-15T18:09:50.393 に答える