/ / MVC3 Ajax.ActionLink फ़ाइल ओपन डायलॉग का कारण बनता है - json, asp.net-mvc-3

MVC3 Ajax

मुझे निम्नलिखित Ajax.ActionLink परिभाषित के साथ एक दृश्य मिला

@Ajax.ActionLink(@Model.Game.VisitorTeam.FullName, "SelectTeam", new { gameID = @Model.Game.GameID, pickID = @Model.Game.VisitorTeam.TeamID }, new AjaxOptions { HttpMethod = "POST", OnSuccess = "pickMade" }, new { id = "vpick-" + @Model.Game.GameID });

यहाँ मेरे नियंत्रक में एक्शन परिभाषित है।

public JsonResult SelectTeam(int gameID, int pickID) {
var user = Membership.GetUser(User.Identity.Name);
var message = "Pick Submitted";
var userID = (Guid) user.ProviderUserKey;
_pickService.SubmitPick(userID, gameID, pickID);

return Json(new {id = gameID, teamID = pickID, message}, JsonRequestBehavior.AllowGet);

}

जब मैं पृष्ठ पर लिंक पर क्लिक करता हूं, तो यह वापस पोस्ट करता हैमेरे नियंत्रक में मेरे एक्शन के लिए, कोड निष्पादित करता है और Json परिणाम देता है। हालाँकि, क्लाइंट के परिणाम प्राप्त होते ही, ब्राउज़र एक "सेव अस" डायलॉग खोलता है। यदि मैं फ़ाइल को सहेजता हूं, तो यह मेरा Json परिणाम है, जैसा कि अपेक्षित था। मैं नहीं जानता कि मेरे "pickMade" फ़ंक्शन isn "t को पोस्टबैक से परिणाम को संभालने के लिए क्यों नहीं बुलाया जा रहा है।

मेरे अन्य अनुप्रयोग में, मैं "का उपयोग कर रहा हूँ[AcceptVerbs (HttpVerbs.Post)] विशेषता। हालाँकि, अगर मैं इस एप्लिकेशन में यह कोशिश करता हूं, तो मेरे विचार से कार्रवाई को कॉल करते समय मुझे 404 त्रुटि मिलती है। यदि मैं विशेषता हटाता हूं, तो मुझे मेरे रिटर्न मान में JsonRequestBehavior.AllowGet जोड़ना होगा।

मेरे पास दूसरे एप्लिकेशन में बहुत समान कार्यक्षमता है और यह ठीक काम करता है। मुझे यकीन नहीं है कि क्या चल रहा है, इसलिए किसी भी मदद की सराहना की है।

उत्तर:

जवाब के लिए 3 № 1

आपके पास 2 समाधान हैं (मुझे लगता है)।

पहला समाधान (सबसे अच्छा नहीं):

1 / अपने Web.config में विनीत जावास्क्रिप्ट का वर्णन करना

<appSettings>
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="false" />
</appSettings>

2 / MicrosoftAjax.js और MicrosoftMvcAjax.js स्क्रिप्ट फ़ाइलों को शामिल करना

<script src="@Url.Content("~/Scripts/MicrosoftAjax.debug.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftMvcAjax.debug.js")" type="text/javascript"></script>

दूसरा समाधान (बेहतर):

1 / विनीत जावास्क्रिप्ट सक्षम रखें (डिफ़ॉल्ट रूप से)

  <appSettings>
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>

2 / jquery- विनीत जावास्क्रिप्ट फ़ाइलों को शामिल करें।

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

पहले से ही यह मुद्दा कई बार आया था और मैंने हमेशा काम किया: /!