2012-12-06 6 views
6

के साथ नियंत्रक से देखने के लिए मॉडल को पास करें। मैं दृढ़ता से टाइप किए गए दृश्य से नियंत्रक को मॉडल डेटा प्राप्त करने का प्रयास कर रहा हूं। सबमिट बटन का उपयोग करना ठीक है, मैं डेटा प्राप्त कर सकता हूं। अब मैं html.actionlink के साथ इसे प्राप्त करना चाहता हूं। देखें: यह है कि मैं क्या हैएचटीएमएल.एक्शनलिंक

@model WordAutomation.Models.Document  
    @{ 
     ViewBag.Title = "Document"; 
    } 
     <script type="text/javascript"> 
      $(function() { 
       $("#dialog").dialog(); 
      }); 
     </script> 

    <h2>Document</h2> 

    @using (Html.BeginForm()) { 
     @Html.ValidationSummary(true) 

     <fieldset> 
      <legend>Document</legend> 

      <div class="editor-label"> 
       @Html.LabelFor(model => model.ClientTitle) 
      </div> 
      <div class="editor-field"> 
       @Html.EditorFor(model => model.ClientTitle) 
       @Html.ValidationMessageFor(model => model.ClientTitle) 
      </div> 

      <div class="editor-label"> 
       @Html.LabelFor(model => model.ClientFullName) 
      </div> 
      <div class="editor-field"> 
       @Html.EditorFor(model => model.ClientFullName) 
       @Html.ValidationMessageFor(model => model.ClientFullName) 
      </div> 

      <div class="editor-label"> 
       @Html.LabelFor(model => model.ClientCustomSSN) 
      </div> 
      <div class="editor-field"> 
       @Html.EditorFor(model => model.ClientCustomSSN) 
       @Html.ValidationMessageFor(model => model.ClientCustomSSN) 
      </div> 

      <p> 
       <input type="submit" value="Create" />    
      </p> 
     </fieldset> 
    } 

    <div> 
     @Html.ActionLink("Preview", "PreviewWordDocument", "Home", null, new { id = "previewLink" })  

    </div> 

    <div id="dialogcontainer"> 
     <div id="dialogcontent"><input type="submit" value="Create" />  </div> 
    </div> 

    @section Scripts { 

     <script type="text/javascript"> 

       $(document).ready(function() { 

        $("#dialogcontainer").dialog({ 
         width: 400, 
         autoOpen:false, 
         resizable: false, 
         title: 'Test dialog', 
         open: function (event, ui) { 
          $("#dialogcontent").load("@Url.Action("PreviewWordDocument", "Home")"); 
         }, 
         buttons: { 
          "Close": function() { 
           $(this).dialog("close"); 
          } 
         } 
        }); 

        $("#previewLink").click(function(e) { 
         e.preventDefault(); 
         $("#dialogcontainer").dialog('open'); 
        }); 

       }); 

      </script> 
    } 

नियंत्रक:

public ActionResult Document() 
     {  
      return View(); 
     } 

     [HttpPost] 
     public ActionResult Document(WordAutomation.Models.Document model) 
     { 
      Models.Utility.EditWord word = new Models.Utility.EditWord(); 
      word.EditWordDoc(model); 
      return View("Display", model); 
     } 

     public ActionResult PreviewWordDocument() 
     {   
      var image = Url.Content("~/Content/preview.jpeg"); 

      return PartialView((object)image); 
     } 

दस्तावेज़ ActionResult मॉडल मिल सकता है, लेकिन मुझे पता है कि कैसे मैं से मान प्राप्त कर सकते चाहता हूँ एक्शनलिंक जो पूर्वावलोकनवार्ड डॉक्यूमेंट एक्शन को ट्रिगर करेगा। जब आप एक सबमिट बटन पर रूप है जो सबमिट बटन पर रहता है वसीयत में सर्वर पर पोस्ट, लेकिन जब आप एक लंगर पर क्लिक करें (अंदर सभी इनपुट तत्वों क्लिक करें एक HTML पृष्ठ में पहले से

धन्यवाद, Laziale

उत्तर

4

फ़ॉर्म केवल इसकी क्रिया विशेषता द्वारा दिए गए यूआरएल में सबमिट बटन का उपयोग कर पोस्ट किया जा सकता है।

हालांकि आप jQuery पोस्ट विधि का उपयोग करके एक अलग यूआरएल में फॉर्म डेटा भेज सकते हैं, इसे भेजने से पहले फॉर्म को मैन्युअल रूप से मान्य कर सकते हैं। इस तरह आप पूर्वावलोकन डेटा को पूर्वावलोकन WordDocument नियंत्रक विधि में भेज सकते हैं और वांछित div में पूर्वावलोकन दिखाने के लिए प्रतिक्रिया को संभाल सकते हैं। (यदि आप प्रपत्र को एक आईडी देना यह उपयोगी होगा, ताकि आप आसानी से उपयोग कर इसे पा सकते हैं jQuery)

तो पूर्वावलोकन लिंक का क्लिक ईवेंट हैंडलर इस तरह दिखेगा:

$("#previewLink").click(function(e) { 
    e.preventDefault(); 
    if($("#YourFormId").valid()){ 
     $("#dialogcontainer").dialog('open'); 
    } 
}); 

में संवाद के खुले कार्य को आप jQuery एजेक्स फ़ंक्शन का उपयोग करके पूर्वावलोकन नियंत्रक विधि में फ़ॉर्म (जिसे पहले ही सत्यापित किया गया था) पोस्ट करेंगे। प्रतिक्रिया dialogContent div में लोड किया जाएगा:

$.ajax({ 
     type: "POST", 
     url: $("#previewLink").attr("href"), //the preview controller method 
     data: $("#YourFormId").serialize(), 
     success: function (data) { 
      //load ajax response into the dialogContent div 
      $("#dialogcontent").html(data); 
     }, 
     error: function(xhr, error) { 
      $("#YourFormId").prepend('<div id="ajaxErrors"></div>') 
          .html(xhr.responseText); 
     } 
    }); 

अब तुम अब PreviewWordDocument कार्रवाई में पूरे दस्तावेज़ प्राप्त करने में सक्षम हो जाएगा:

public ActionResult PreviewWordDocument(WordAutomation.Models.Document model) 
{   
    var image = Url.Content("~/Content/preview.jpeg"); 

    return PartialView((object)image); 
} 
4

<a> टैग)।

 @Html.ActionLink("Preview", "PreviewWordDocument", "Home", null, 
    new { id = "previewLink" }) 
: आप केवल एक प्राप्त विधि के साथ और किसी भी value.but पोस्ट किए बिना अगर आप इस दृष्टिकोण आप यह कर सकते क्वेरी द्वारा string.you लिए अनुरोध करने के लिए निम्न का इस्तेमाल किया है के साथ सर्वर से विशेष मूल्य भेजना चाहते हैं एक अनुरोध भेज

इस जाएगा उत्पादन:

 @Html.ActionLink("Preview", "PreviewWordDocument", "Home", 
    new { id = "previewLink" }, null) 

परिणाम fr:

<a id="previewLink" href="/Home/PreviewWordDocument"> Preview </a> 

है जो incorrect.to इस तरह ActionLink उपयोग 4 पैरामीटर के साथ सर्वर से किसी भी मूल्य पारित ओम यह कोड होगा:

<a href="/Home/PreviewWordDocument?id=previewLink"> Preview </a> 

चीयर्स!

संबंधित मुद्दे