2012-06-22 9 views
9

पर वापस कैसे करें मैं एक नियंत्रक से एक एक्सएमएल दस्तावेज़ को देखने के लिए कुछ मार्गदर्शन करना चाहता हूं। मेरे विचार में, मैं JQuery का उपयोग कर XML दस्तावेज़ को पार करना चाहता हूं। इस उपयोग के लिए JQuery का उपयोग करके बहुत सारे ऑनलाइन उदाहरण हैं।एएसपी.नेट एमवीसी में, एक एक्सएमएल दस्तावेज़ को एक दृश्य

मेरे पास एक पोर्टफोलियोलिस्ट() नियंत्रक है, जो अभी अभी दृश्य को वापस कर देता है, लेकिन मैं यह जानना चाहता हूं कि एक्सएमएल उत्तर कैसे वापस लेना है। आप नीचे देखेंगे कि मैं केवल स्थानीय उद्देश्यों के लिए एक्सएमएल प्रतिक्रिया लिख ​​रहा हूं, परीक्षण प्रयोजनों के लिए ...

क्या मुझे इसके लिए एक मॉडल तैयार करने की ज़रूरत है?

public ActionResult PortfolioList() 
    { 
     XmlDocument xmlResponse = new XmlDocument(); 
     XmlDocument xmlRequest = new XmlDocument(); 

     bool rzInitialized = nitializeRz(); 
     if (rzInitialized == false) 
     { 
      ViewBag.Message = "Rz Init has failed. Check if Rz is running"; 
      return View(); 
     } 
     bool rzConnected = ConnectToRz();  

     ViewBag.Message = "Here you may view a list of portfolios and exposures."; 

     // Build Portfolio Select request here ! 
     RequestBuilder rzRequest = new RequestBuilder(); 

     // REQUEST FOR PORTFOLIOS ! 
     string portfoliosRequest = rzRequest.PortfoliosRequest("Portfolios"); 
     string **portfoliosResponse** = RzClient.sendRequest(portfoliosRequest, false); 

     // DEBUG REQUESTS !! 
     if (Debugflag) 
     { 
      rzRequest.DebugOutput("portfolios", portfoliosRequest, portfoliosResponse); 
     } 
     DisconnectFromRz(); 

     return View("PortfolioList"); 
    } 
+0

हां, आपको अपने सभी विचारों के लिए मॉडल बनाना चाहिए जिसमें कोई गतिशील डेटा हो। यह हमेशा इस तरह से क्लीनर है। – EkoostikMartin

उत्तर

10

आप इसे निम्नानुसार कर सकते हैं।

public ActionResult PortfolioList() 
{ 
    //Your code 
    .... 
    return this.Content(yourXml, "text/xml"); 
} 
+0

यदि आप ऐसा करते हैं, तो दृश्य कैसा दिखता है? – EkoostikMartin

+0

डिज़ाइन टाइम व्यू खाली है लेकिन रनटाइम प्रतिक्रिया आपका एक्सएमएल – Kaf

+0

होगा जो ओपी के उपयोगकेस के लिए काम नहीं करेगी - "मेरे विचार में, मैं JQuery का उपयोग कर एक्सएमएल दस्तावेज़ को पार करना चाहता हूं।" – EkoostikMartin

1

यदि नियंत्रक कार्रवाई से एक्सएमएल दस्तावेज़ लौटा रहा है तो क्या आप एक बेहतर विचार के बारे में एक कस्टम एक्शन परिणाम बना रहे हैं।

public class XmlDocumentResult: ContentResult 
{ 
    public XmlDocument XmlDocument { get; set; } 

    public override void ExecuteResult(ControllerContext context) 
    { 
     if (XmlDocument == null) 
     return; 

     Content = XmlDocument.InnerXml; 
     ContentType = "text/xml"; 
     base.ExecuteResult(context); 
    } 
} 

अब तुम जैसी कोई गतिविधि से एक्सएमएल लौट सकते हैं,

public XmlDocumentResult GetXml() 
{ 
    var xmlDoc = new XmlDocument(); 
    ... 

    return new XmlDocumentResult { XmlDocument = xmlDoc }; 
} 
+0

मार्क, यह वास्तव में बहुत दिलचस्प लग रहा है। मैंने इस विचार को एक समान एक्सएमएल से संबंधित पोस्ट में पोस्ट किया है, लेकिन वे कोडप्लेक्स (एक्सएमएलआरसल्ट एक्शन) पर एमवीसीसींट्रिब पर चर्चा कर रहे थे। किसी भी मामले में पोस्ट में ExecuteResult() विधि को ओवरराइड भी शामिल किया गया था। धन्यवाद, क्योंकि मैं इस प्रोटो के साथ प्रयोग करूंगा !!! :-) - बॉब –

+0

इनरएक्सएमएल में पूरा दस्तावेज़ नहीं होगा। यह गलत है। –

0

अन्य डेवलपर की सलाह के आधार पर, मैं Json डेटा स्वरूप मार्ग जा रहा हूँ। यह पता चला है कि एक एएसपीनेट नियंत्रक से एक एक्सएमएल दस्तावेज़ को वापस देखने के लिए एक पूर्ण दुःस्वप्न है (यानी मैं एक्सएमएल दस्तावेज़ स्वयं ब्राउज़र पर वापस कर सकता हूं, लेकिन मैं यह नहीं समझ सकता कि jQuery का उपयोग करने के लिए jQuery का उपयोग कैसे करें नोड्स)।

मैं सर्वर पक्ष पर एक्सएमएल दस्तावेज़ को deserializing और मेरे दृश्य में एक JsonResult लौटने का मार्ग चला गया है (यानी मेरे नियंत्रक में कॉल करने के लिए JQuery के अजाक्स दिनचर्या का उपयोग कर)।

नमूना XML क्रमांकन कोड: http://msdn.microsoft.com/en-us/library/58a18dwa.aspx#Y0

0

मैं एक jQuery कोड नमूना ऑनलाइन जो मेरे लिए काम करता मिल गया! कोड नमूना एक XML दस्तावेज को पार्स करता है इस प्रकार है (यूआरएल http://www.switchonthecode.com/tutorials/xml-parsing-with-jquery है):

<script type="text/javascript"> 

$(document).ready(function() { 
    $.ajax({ 
     type: "GET", 
     url: "/Xml/xml_test1.xml", 
     dataType: "xml", 
     success: parseXml, 
     error: function (error) { 
      alert("Some problem."); 
     } 
    }); 
}); 

function parseXml(xml) { 
    //find every Tutorial and print the author 
    $(xml).find("Tutorial").each(function() { 
     $("#output").append($(this).find("Title").text() + "<br/>"); 
     $(this).find("Category").each(function() { 
      $("#output").append($(this).text() + "<br />"); 
     }); 
     $("#output").append("<br/>"); 


    }); 
} 

हालांकि, मैं कुछ इस तरह समझ में नहीं आता काम नहीं करता है (बल्कि सिर्फ हर की पूरी innerText उदासीनता मेरे पृष्ठ पर एकल तत्व) ... टिप्पणी पंक्तियों के बारे में खेद है:

//$.ajax({ 
// url: "/Portfolios/getPortfolios", 
// type: "POST", 
// dataType: "XML", 
// async: true, 
// success: function (data) { 
//  if (!data) 
//   alert("No xml data returned."); 
//  else { 
//   var $xml = $(data); 
//   $xml.find("portfolioSummary").each(function() { 
//    $('.XmlResp').text("DUDE!");   // text($(this).text()); 
//   }); 
//   //alert($xml.text()); 

//   $('.XmlResp').text("Wow are we getting somewhere ?!!!"); 
//   $('.XmlResp').replaceWith($xml.text()); 

//  } 
// }, 
// error: function (error) { 
//  alert("failed"); 
// } 
//}); 
संबंधित मुद्दे