2011-04-20 7 views
42

एक एजेक्स एक्शन लिंक रखने की कोशिश कर रहा है, जिस पर क्लिक किया गया है, HttpGet को एक एक्शन विधि में करना चाहिए जो PartialViewResult देता है और HTML को div में डाल देता है।एएसपी.नेट एमवीसी 3 (रेजर) अजाक्स। एक्शनलिंक - मैं गलत क्या कर रहा हूं?

<div id="admin-options" class="admin"></div> 
@Ajax.ActionLink("Show Admin Options", "ShowOptions", "Post", new { area = "Admin" }, new AjaxOptions { UpdateTargetId = "admin-options", HttpMethod = "GET" }) 

यहाँ कार्रवाई विधि है:

public class PostController : Controller 
{ 
    [HttpGet] 
    [Authorize(Roles="Admin")] 
    public PartialViewResult ShowOptions() 
    { 
     return PartialView(); 
    } 
} 

यहाँ एचटीएमएल उत्पन्न है:

<a data-ajax="true" data-ajax-method="GET" data-ajax-mode="replace" data-ajax-update="#admin-options" href="/Admin/Post/ShowOptions">Show Admin Options</a> 

मेरे लिए ठीक लग रहा है

यहाँ मेरी दृश्य है।

लेकिन AJAX कॉल करने के बजाय, यह ब्राउज़र यूआरएल के माध्यम से एक नियमित HTTP GET करता है, और /Admin/Post/ShowOptions पर रीडायरेक्ट करता है।

स्पष्ट रूप से मुझे कुछ याद आ रहा है - लेकिन क्या?

उत्तर

66

सुनिश्चित करें कि आपके पृष्ठ में अविभाज्य AJAX जावास्क्रिप्ट लाइब्रेरी शामिल है।

<script src="<%=Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")%>" type="text/javascript"></script> 
+2

अरघ, वह था। मैं अविभाज्य जेएस था लेकिन AJAX अविभाज्य नहीं था। चियर्स! – RPM1984

48

और उस्तरा दृश्य इंजन का उपयोग कर उन लोगों के लिए ...

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script> 
1

तुम भी AjaxOptions में InsertionMode विकल्प शामिल कर सकते हैं। मुझे यकीन है कि अगर आप इसे बाहर कर देते हैं तो एक डिफ़ॉल्ट व्यवहार होता है लेकिन इसे बेहतर तरीके से परिभाषित करना बेहतर होता है।

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