2013-03-15 43 views
0

在視圖中有三個部分視圖,通過單選按鈕選擇切換。每個局部視圖都有自己的提交輸入,其中兩個局部視圖包含一個tinyMCE textarea。當我只有一個部分包含一個tinyMCE textarea時,我能夠使用.triggerSave()來驗證該textarea,但現在我添加了第二個tinyMCE textarea,我無法讓任何一個tinyMCE textarea通過驗證。無法在MVC3中驗證tinyMCE textarea

我嘗試了許多關於SO的類似問題的解決方案,但是我沒有成功地讓這些textareas通過驗證。

這裏是關於第一部分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」。我認爲示例代碼應該提供我的問題的足夠的描述。如果需要,我可以添加其他部分的代碼。預先感謝您尋求解決方案的任何幫助。

回答

0

我終於弄明白了。解決方法是在輸入引起回發的輸入之後添加點擊功能。

實施例:

<p> 
    <input id="CreateRow" type="submit" value="Create" /> 
</p> 
    <script type="text/javascript"> 
     $("#CreateRow").click(function() { 
      tinyMCE.triggerSave(); 
     }); 
    </script>