我在一个视图中有三个部分视图,它们通过单选按钮选择进行切换。每个部分视图都有自己的提交输入,其中两个部分视图包含一个 tinyMCE 文本区域。当我只有一个包含 tinyMCE 文本区域的部分时,我能够使用 .triggerSave() 来验证该文本区域,但现在我已经添加了第二个 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);
}
第二部分的设置与上面的第一部分一样,除了在所有适用字段中包含“SchemaHeader”而不是“SchemaRow”,包括提交输入 id 为“CreateSchemaHeader”。我认为示例代码应该对我的问题提供足够的描述。如果需要,我可以添加其他部分的代码。提前感谢您在寻找解决方案方面的任何帮助。