2010-01-02 15 views
6

नहीं बदलता है मेरे पास एचटीपीपोस्ट के लिए मेरे नियंत्रक में एक क्रिया है। कि कार्रवाई के अंदर मैं DB में रिकॉर्ड सम्मिलित है, और फिर एक दृश्य के लिए एक अलग कार्रवाई का नाम निर्दिष्ट लौटने के लिए, क्योंकि मैं रिकॉर्ड वे अभी बनाया के देखने ऐसी जानकारी के रूप में कहीं और उपयोगकर्ता लेने के लिए, चाहते हैं, और मैं में पारित वर्तमान मॉडल मैं डेटा वे अभी-अभी डाला फिर से लोड करने के लिए की जरूरत नहीं है तो। दुर्भाग्य से, पता बार में यूआरएल अभी भी मूल कार्रवाई बनाने को दर्शाता है।एएसपी एमवीसी: दृश्य नाम निर्दिष्ट करने से यूआरएल

[HttpPost] 
public ActionResult Create(MyModel model) 
{ 
    //Insert record 
    ... 
    //Go to details view, pass the current model 
    //instead of re-loading from database 
    return View("Details", model); 
} 

मैं कैसे "http://myapp/MyController/Create/1" के बजाय यूआरएल "http://myapp/MyController/Details/1" दिखाने के लिए मिलता है? क्या यह संभव है, या मैं एक रीडायरेक्ट क्या करना होगा? मैं आशा करती हूं मैं रीडायरेक्ट से बच सकते हैं ...

उत्तर

4

आप एक रीडायरेक्ट ब्राउज़र में URL बदल क्या करना है।

आपके द्वारा पारित दृश्य नाम केवल एमवीसी को प्रस्तुत करता है जो प्रस्तुत करने के लिए देखता है। यह आपके आवेदन का कार्यान्वयन विवरण है।

कोड कुछ ऐसा दिखाई देगा:

[HttpPost] 
public ActionResult Create(MyModel model) 
{ 
    //Insert record 
    ... 
    return RedirectToAction("Details", new { id = model.ID }); 
} 

कारणों में से एक आप चाहते यहाँ एक रीडायरेक्ट ऐसा करने है कि उपयोगकर्ता ब्राउज़र में ताज़ा करें बटन हिट कर सकते हैं और कहा कि परेशान "नहीं मिल आप डेटा को फिर से "संवाद पोस्ट करने के लिए करना चाहते हैं।

इस व्यवहार को अक्सर "पोस्ट-रीडायरेक्ट-गेट" या "पीआरजी" कहा जाता है। पीआरजी पर अधिक जानकारी के लिए विकिपीडिया आलेख देखें: Post/Redirect/Get

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