2011-06-13 17 views
5

एमवीसी सीखना और मैं 3 फ़ील्ड के साथ एक पेज को लागू करने की कोशिश कर रहा हूं नाम-उपनाम-विवरण तो मेरे सीखने के उदाहरण में मैं कर्मचारियों को लोड कर रहा हूं और मुझे उन्हें बनाने और संपादित करने में सक्षम होना चाहिए।सीकेएडिटर एमवीसी 3 कार्यान्वयन सहायता

विवरण सीकेईडिटर का उपयोग करना चाहिए।

  • मैं लोड कर सकते हैं कर्मचारियों
  • मैं उन्हें

हालांकि मैं इस तरह के जो भी वर्णन फ़ील्ड में प्रकार उपयोगकर्ता के रूप में, विवरण को बचाने के लिए सक्षम होने के लिए नहीं कर पा रहे बचा सकता है। मैंने नेट पर कुछ उदाहरण देखे हैं लेकिन डाउनलोड करने के लिए कोई समाधान नहीं है, क्योंकि मैं एक साथ नहीं लग सकता। मैं एक शांत एचटीएमएल सहायक के साथ इस आदमी को मिल गया है, लेकिन एक साथ http://www.andrewbarber.com/post/CKEditor-Html-Helpers-ASPNET-MVC-Razor-Views.aspx

एक उदाहरण डाल करने के लिए सक्षम होने के लिए नहीं कर पा रहे समस्याएं हैं:

  1. कैसे आप मूल्य है कि CKeditor अंदर लिखा गया मिलता है ।
  2. मेरे विचार में मॉडल विवरण हर समय शून्य है
  3. ckEditor पृष्ठ के निर्माण को धीमा कर देता है। मैं इसे तेज़ी से कैसे बना सकता हूं? मुझे सभी विकल्पों की आवश्यकता नहीं है।
  4. वहाँ एमवीसी 3 का उपयोग कर एक उदाहरण है जिसे मैं टेम्पलेट के रूप में उपयोग कर सकता हूं।

मैं इस प्रकार सभी पाइपलाइन किया है:

Create.chtml

  @model MvcApplicationCKEditorIntegration.Models.EmployeeViewModel 
     @{ 
      ViewBag.Title = "Create"; 
     } 
     <h2> 
      Create</h2> 
     <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> 
     <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 
     @using (Html.BeginForm()) 
     { 
      @Html.ValidationSummary(true) 
      <fieldset> 
       <legend>EmployeeViewModel</legend> 
       <div class="editor-label"> 
        @Html.LabelFor(model => model.FirstName) 
       </div> 
       <div class="editor-field"> 
        @Html.EditorFor(model => model.FirstName) 
        @Html.ValidationMessageFor(model => model.FirstName) 
       </div> 
       <div class="editor-label"> 
        @Html.LabelFor(model => model.LastName) 
       </div> 
       <div class="editor-field"> 
        @Html.EditorFor(model => model.LastName) 
        @Html.ValidationMessageFor(model => model.LastName) 
       </div> 
       <div class="editor-label"> 
        @Html.LabelFor(model => model.Email) 
       </div> 
       <div class="editor-field"> 
        @Html.EditorFor(model => model.Email) 
        @Html.ValidationMessageFor(model => model.Email) 
       </div> 
       <div class="editor-label"> 
        @Html.LabelFor(model => model.PhotoPath) 
       </div> 
       <div class="editor-field"> 
        @Html.EditorFor(model => model.PhotoPath) 
        @Html.ValidationMessageFor(model => model.PhotoPath) 
       </div> 
       <div class="editor-label"> 
        @Html.LabelFor(model => model.Description) 
       </div> 
       <div class="editor-field">    
        <textarea class="ckeditor" id="ckeditor" rows="10"></textarea>    
       </div> 
       <p> 
        <input type="submit" value="Create" /> 
       </p> 
      </fieldset> 
     } 
     <div> 
      @Html.ActionLink("Back to List", "Index") 
     </div> 
     <script type="text/javascript" src="../../ckeditor/ckeditor.js"></script> 

EmployeeController

  public class EmployeeController : Controller 
      { 
       public ActionResult Index() 
       { 
        var employeeRepository=new EmployeeRepository(); 
        var employees = employeeRepository.GetAll(); 
        var employeeList = employees.Select(employee => new EmployeeViewModel 
                     { 
                      EmployeeId = employee.EmployeeId, 
                      FirstName = employee.FirstName, 
                      LastName = employee.LastName, 
                      PhotoPath = employee.PhotoPath, 
                      Email = employee.Email, 
                      Description = employee.Description 
                     }).ToList(); 

        return View(employeeList); 
       } 

       public ActionResult Create() 
       { 

        return View(new EmployeeViewModel()); 
       } 

       [HttpPost] 
       public ActionResult Create(EmployeeViewModel vm) 
       { 
        if(ModelState.IsValid) 
        { 
         var employeeRepository=new EmployeeRepository(); 
         var emp=new Employee 
             { 
              FirstName = vm.FirstName, 
              LastName = vm.LastName, 
              Description = vm.Description, 
              Email = vm.Email, 
              PhotoPath = vm.PhotoPath 
             }; 
         employeeRepository.Insert(emp); 
         return RedirectToAction("Index"); 

        } 
        return View(vm); 
       } 




      } 
     } 

किसी भी सुझाव के लिए धन्यवाद !!!

संपादित उदाहरण का उपयोग CKEditor सहायक

@using MvcApplicationCKEditorIntegration.Helpers 
    @model MvcApplicationCKEditorIntegration.Models.EmployeeViewModel 
    @{ 
     ViewBag.Title = "Create"; 
    } 
    <h2> 
     Create</h2> 
    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> 
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 
    @Html.CKEditorHeaderScripts() 
    @using (Html.BeginForm()) 
    { 
     @Html.ValidationSummary(true) 
     <fieldset> 
      <legend>EmployeeViewModel</legend> 
      <div class="editor-label"> 
       @Html.LabelFor(model => model.FirstName) 
      </div> 
      <div class="editor-field"> 
       @Html.EditorFor(model => model.FirstName) 
       @Html.ValidationMessageFor(model => model.FirstName) 
      </div> 
      <div class="editor-label"> 
       @Html.LabelFor(model => model.LastName) 
      </div> 
      <div class="editor-field"> 
       @Html.EditorFor(model => model.LastName) 
       @Html.ValidationMessageFor(model => model.LastName) 
      </div> 
      <div class="editor-label"> 
       @Html.LabelFor(model => model.Email) 
      </div> 
      <div class="editor-field"> 
       @Html.EditorFor(model => model.Email) 
       @Html.ValidationMessageFor(model => model.Email) 
      </div> 
      <div class="editor-label"> 
       @Html.LabelFor(model => model.PhotoPath) 
      </div> 
      <div class="editor-field"> 
       @Html.EditorFor(model => model.PhotoPath) 
       @Html.ValidationMessageFor(model => model.PhotoPath) 
      </div> 
      <div class="editor-label"> 
       @Html.LabelFor(model => model.Description) 
      </div> 
       @Html.CKEditorFor(model=>model.Description) 
      <p> 
       <input type="submit" value="Create" onclick="@Html.CKEditorSubmitButtonUpdateFunction()" /> 
      </p> 
     </fieldset> 
    } 
    <div> 
     @Html.ActionLink("Back to List", "Index") 
    </div> 
    <script type="text/javascript" src="../../ckeditor/ckeditor.js"></script> 
+0

आप उस ब्लॉग पोस्ट में पोस्ट किए गए समाधान का उपयोग नहीं कर रहे हैं; आप कहीं भी मददगार नहीं बुला रहे हैं। –

उत्तर

7

आप वास्तव में सब पर CKEditor सहायक का उपयोग नहीं कर रहे हैं कि ब्लॉग पेज पर वर्णन किया गया है (जो मेरे अपने ब्लॉग है)

कि सहायक के प्रयोजन है कि एक बार आप अपने प्रोजेक्ट में कोड को शामिल किया है सही ढंग से , तो आप बस यह कर सकते हैं:

@Html.CKEditorFor(model=>model.Description) 

हालांकि, आप बस उस के बाद 'मैन्युअल' एक सादे पुराने पाठ क्षेत्र बनाने जा करने के लिए और इसके साथ काम लग रहे हैं। आपकी संपत्ति में इसे बांधने के लिए कुछ भी नहीं है, जैसा कि आपने उस पोस्ट में वर्णित सहायक का उपयोग किया था।

यह भी ध्यान रखें कि आप उस कोड का उपयोग नहीं कर रहे हैं जो दृश्यों के पीछे टेक्स्ट क्षेत्र को अपडेट करता है; इसलिए यदि आपके मॉडल में RequiredDescription फ़ील्ड पर सेट है, तो आपको क्लाइंट-साइड सत्यापन त्रुटि पहली बार सबमिट होगी जब आप अन्यथा ठीक से कॉन्फ़िगर किया गया CKEditorFor() यह मेरे सहायक के लिए अद्वितीय नहीं है; किसी भी बाध्य संपत्ति जिसे 'आवश्यक' है, उस ब्लॉग पोस्ट में उल्लिखित जावास्क्रिप्ट का थोड़ा सा होना चाहिए। मैं इसे सबमिट बटन से onclick के रूप में करता हूं, लेकिन आप कहीं भी वही कोड चला सकते हैं। आपको इसे उस पृष्ठ में शामिल करने की आवश्यकता है, जिसे आपने नहीं किया है।

+0

हाय, आपके उत्तर के लिए धन्यवाद। मैंने उपरोक्त कोड का उपयोग नहीं किया है क्योंकि मुझे समझ में नहीं आया कि आप सीकेडिटर की सामग्री को कैसे सहेजते हैं, यह निश्चित रूप से अच्छा दिखता है। मैं अभी कोशिश कर रहा हूं। क्या आपके पास कोई समाधान है जिसे मैं डाउनलोड कर सकता हूं? – user712923

+0

आप सामग्री को 'सेव' करने के लिए कुछ भी विशेष नहीं करते हैं; यह किसी भी अन्य बाध्य संपत्ति की तरह काम करता है। –

+0

@HtmlCKEditor है जो सभी काम कर रहा है और इसे विवरण फ़ील्ड में सहेज रहा है? – user712923

3

आप के लिए "विवरण"

तो

पाठ क्षेत्र के नाम विशेषता सेटिंग करके देख सकते हैं:

<div class="editor-field">    
    <textarea class="ckeditor" id="ckeditor" rows="10" name="Description"></textarea> 
</div> 

है कि अगर ऐसा नहीं करता काम करें तो आपको संपादक में क्या है इसका मूल्य प्राप्त करने के लिए जावास्क्रिप्ट का उपयोग करना पड़ सकता है और इसे पोस्ट से पहले एक छिपे हुए क्षेत्र में सेट कर सकता है।