2011-11-30 10 views
6

server.execute के माध्यम से पैरामीटर पास करना संभव है?server.execute के माध्यम से पैरामीटर पास कर रहा है?

Fx। मेरे पास site.asp एक आईएफ-परिदृश्य में है जहां मुझे functions.asp?a=something&id=123 निष्पादित करने की आवश्यकता है। क्या यह संभव है?!

site.asp पर:

dim id 
id = 123 

if b = "hi" then 
    server.execute("functions.asp?a=something&id=" & id) 
else 
    response.write("No way dude") 
end if 

functions.asp

a = request.querystring("a") 
id = request.querystring("id") 

if a = "something" and cint(id) > 100 then 
    response.write("Yes way dude") 
else 
    response.write("No way dude") 
end if 
+0

जब आप अपना कोड चलाते हैं तो क्या होता है? –

+0

सर्वरोबजेक्ट त्रुटि 'एएसपी 0173: 80004005' मैपपाथ-विधि में पैरामीटर-पथ में अमान्य वर्ण --- या कुछ समान रूप से, यह मेरी स्क्रीन पर डेनिश में है :) – Behrens

+0

और क्वेरीस्ट्रिंग पैरामीटर के बिना, तब क्या होता है? –

उत्तर

5

आप Server.Execute में क्वेरी स्ट्रिंग उपयोग नहीं कर सकते, यह स्पष्ट रूप से official documentation में उल्लेख किया गया है।

आप क्या कर सकते हैं बेहतर है: आप सीधे उपयोग कर सकते हैं चर id functions.asp अंदर site.asp में परिभाषित किया गया है, और आप यह भी घोषणा और अन्य चर, a सेट कर सकते हैं:

--site.asp:

dim id, a 
id = 123 
a = "something" 
server.execute("functions.asp") 

--functions.asp

if a = "something" and cint(id) > 100 then 
    response.write("Yes way dude") 
else 
    response.write("No way dude") 
end if 

यह नया "स्क्रिप्टिंग वातावरण" बनाता है के रूप में निष्पादित फ़ाइल बुला कोड गुण, तरीकों या चर के लिए उपयोग, केवल वैश्विक अनुरोध पैरामीटर के लिए, नहीं होगा सत्र आदि

इसे ध्यान में रखते , मुझे डर है चारों ओर सबसे आसान तरीका सत्र चर का उपयोग कर रहा है पृष्ठों के बीच मूल्य पारित करने के लिए:

Session("id") = 123 
Session("a") = "something" 

और फिर:

if Session("a") = "something" and Session("id") > 100 then 
    response.write("Yes way dude") 
else 
    response.write("No way dude") 
end if 
+0

यही वह था जो मैंने सोचा था। लेकिन यह बस काम नहीं करता है। मैंने यह सुनिश्चित करने के लिए अद्वितीय परिवर्तनीय-नामों के साथ प्रयास किया है कि परिवर्तनीय ओवरराइट नहीं किया गया है। लेकिन यह मामला भी नहीं है। – Behrens

+0

ऐसा इसलिए हो सकता है क्योंकि यह server.execute के अंदर server.execute है? – Behrens

+0

आपका क्या मतलब है "काम नहीं करता"? आपको क्या सही त्रुटि मिलती है? नेस्टेड 'सर्वर। निष्पादन' की कोशिश नहीं की लेकिन किसी भी कारण से यह नहीं देख सकता कि यह क्यों काम नहीं करेगा। –

3

यह सवाल पुराने और हल हो सकता है लेकिन सबसे अच्छा जवाब सब कुछ का उल्लेख नहीं है, और वहाँ जानकारी स्पष्ट रूप से इसके बारे में Microsoft.com पर तैनात है:


Server.Execute Method

निम्नलिखित संग्रह और गुण निष्पादित एएसपी पृष्ठ पर उपलब्ध हैं:

  1. आवेदन चर, भले ही वे कॉलिंग पेज में सेट हों।
  2. सत्र गुण, भले ही वे कॉलिंग पृष्ठ पर सेट हों।
  3. सर्वर चर और गुण, भले ही वे कॉलिंग पृष्ठ पर सेट हों।
  4. अनुरोध संग्रह और गुण, भले ही वे कॉलिंग पृष्ठ पर सेट हों। इसमें फॉर्म और क्वेरीरींग डेटा कॉलिंग पृष्ठ पर पास किया गया है।
  5. प्रतिक्रिया संग्रह और गुण। निष्पादित .asp फ़ाइल HTTP शीर्षलेख संशोधित कर सकती है। हालांकि, किसी भी .asp फ़ाइल के साथ, यदि निष्पादित .asp फ़ाइल क्लाइंट को प्रतिक्रिया भेजने के बाद HTTP शीर्षलेख संशोधित करने का प्रयास करती है, तो यह एक त्रुटि उत्पन्न करती है।

तो जैसा कि आप देख सकते हैं, वहाँ 5 तरीके एक Server.Execute विधि के माध्यम से चर पारित करने के लिए माइक्रोसॉफ्ट का सुझाव है। माइक्रोसॉफ्ट पर इसे देखने से पहले, पसंदीदा विधि Session थी, क्योंकि सबसे अच्छा जवाब बताता है, क्योंकि मैंने इसे माइक्रोसॉफ्ट.com की जानकारी से पहले देखा था। लेकिन यह देखते हुए कि QueryStrings पिछले पृष्ठ से पारित किया जा सकता है, मुझे मूल्यों को पारित करने के लिए Session का उपयोग करके यह धड़कन कहना होगा। Session की आवश्यकता होगी यदि आपके एप्लिकेशन को निष्पादन पृष्ठ पर चर जोड़ने की आवश्यकता है।

लेकिन चर पारित करने, मैं QueryStrings कहूंगा, और यदि आपका एप्लिकेशन लचीलापन की अनुमति देता है तो इसे लागू करना आसान है। मुझे यकीन है कि आप जानते हैं कि कैसे पहले से ही querystrings उपयोग करने के लिए कर रहा हूँ, लेकिन एक Server.Execute विधि के लिए उपयोग करने के अर्थ में, आप बस यह कर सकते हैं:

ASP1.asp और ASP2.asp होने पर विचार करें:

ASP1.asp में शामिल हैं:

Server.Execute("ASP2.asp") 

ASP2.asp में शामिल हैं:

Response.Write Request("id") 

जब आप ASP1.asp?id=123फोनआप देखेंगे कि ASP2.asp भी Querystring को ASP1.asp पर पास किया गया है, इसलिए यह ASP1.asp की प्रतिक्रिया पर 123 लिख देगा।

यह कार्य के लिए Session का उपयोग करने से बहुत कम जटिल है।

0

संक्षेप में: हाँ, आप सर्वर के साथ क्वेरी के साथ क्वेरीस्ट्रिंग मानों का उपयोग कर सकते हैं। को एएसपी.NET पृष्ठ या एप्लिकेशन के भीतर निष्पादित करें।

आप इस प्रकार, एक QueryString तर्क को क्रियान्वित करने ASPX पेज (page1.aspx) में इकट्ठे में गतिशील चर पारित कर सकते हैं:

Dim intExample1 As Int = 22 
    Dim strExample2 As String = "hello world" 
    Server.Execute("page2.aspx?number=" & intExample1 & "&string=" & Server.UrlEncode(strExample2)) 

इस उदाहरण में, page2.aspx तो संदर्भ और निम्न मान का उपयोग कर सकते :

Request.QueryString("number") 
    Request.QueryString("string") 
+0

गलती, ओपी 'क्लासिक एएसपी' के बारे में पूछ रहा है। 'asp' <>' aspx'। जहां तक ​​आईआईएस का संबंध है, पूरे इंजन को पूरा करें। – frumbert

0

#include बजाय server.execute नहीं उपयोग करने के लिए क्यों?

मैं एक अंतर के लिए देखा और पाया कि इस विशेष मामले में, #include का उपयोग कर सबसे अच्छा समाधान है: https://en.wikibooks.org/wiki/Active_Server_Pages/Server-Side_Includes#What_it_Does

आप कुछ माता पिता पेज में निर्धारित वेरिएबल बच्चे में इस्तेमाल किया जा करने की आवश्यकता है, तो अपने समाधान हो सकता है:

dim id, a 
id = 123 
a = "something" 
if b = "hi" then 
    <!--#include file="functions.asp" --> 
else 
    response.write("No way dude") 
end if 

functions.asp पर

if a = "something" and cint(id) > 100 then 
response.write("Yes way dude") 
else 
    response.write("No way dude") 
end if 

लाभ:

  • बस कार्य करें क्योंकि यह वही पृष्ठ था।
  • सत्र चर के बजाय निपटान चर का उपयोग करें।
  • मुख्य यूआरएल में आंतरिक चर नहीं दिखाएं।
+0

हालांकि परिवर्तनीय घोषणाओं की तरह hoisted शामिल नहीं हैं? – frumbert

+0

कृपया उपरोक्त लिंक में "यह क्या करता है" अनुभाग पढ़ें, यह कहता है "यह आपको किसी अन्य दस्तावेज़ की सामग्री को वर्तमान में आयात करने की अनुमति देता है। यह एएसपी कोड और एचटीएमएल के सामान्य ब्लॉक का पुन: उपयोग करने के लिए बेहद उपयोगी है", इस मामले में पहले दस्तावेज़ में घोषित चर दूसरे में उपलब्ध होंगे। ऐसा लगता है कि आप कोड को स्वयं आयात करते हैं और इसे पहले दस्तावेज़ –

+0

में लिखते हैं लेकिन यह server.execute जैसे कुछ भी नहीं है, जिसकी अपनी मेमोरी स्पेस है। साथ ही, सामग्री के साथ 'run.asp' नामक फ़ाइल बनाने का प्रयास करें:' प्रारंभ करें: <% यदि झूठी है तो%><% else %><% end if %>: end' फिर 'no.asp' में' respond.write "no" 'और 'yes.asp' में' '.. आप पाएंगे कि दोनों को सशर्त होने पर ध्यान दिए बिना निष्पादन शामिल है। तो वे फहराए गए हैं। और आपको शामिल करने के लिए एएसपी से बाहर निकलना होगा; आपके जैसे – frumbert

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