2013-03-16 3 views
0

Я работаю над приложением ASP.NET MVC 2. У меня есть ссылка ajax.action, но она не работает. У меня этот код на мой взгляд:Ссылка ajax.action не показывает предупреждение об успешности

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> 
    <script type="text/javascript"> 
     function success(result) { 
      alert(result); 
      // TODO: do something with the object 
     } 
    </script> 
</asp:Content> 

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 
    <%: Ajax.ActionLink(
    "Delete", 
    "Delete", 
    new { Id = 55 }, 
    new AjaxOptions { OnComplete = "success" }) 
%> 
</asp:Content> 

и это код контроллера:

public ActionResult Index() 
{ 
     ViewData["Message"] = "Welcome to ASP.NET MVC!"; 

     return View(); 
} 



public JsonResult Delete(Int32 Id) { 

    return Json("Record deleted!", JsonRequestBehavior.AllowGet); 
} 

Но когда я нажимаю на ссылку, он показывает запись удалена! в браузере вместо того, чтобы показывать как предупреждение. Я пропустил некоторые файлы?

+0

stackoverflow.com/questions/15448070/ajax-actionlink-not-showing-alert-onsuccess –

ответ

0

Вам может понадобиться включить MicrosoftAjax.js и MicrosoftMvcAjax.js скрипты на странице:

<script type="text/javascript" src="<%= Url.Content("~/scripts/MicrosoftAjax.js") %>"></script> 
<script type="text/javascript" src="<%= Url.Content("~/scripts/MicrosoftMvcAjax.js") %>"></script> 

В ASP.NET MVC 3, а затем эти файлы obsolete and replaced по ненавязчивые скрипты JQuery.

Теперь, когда вы отправили мне свой образец проекта по почте, ясно, в чем проблема. Вы определили свою функцию javascript вашего успеха внутри тега <title> вашей страницы, который, очевидно, не может работать.

Так внутри MasterPage вы должны определить специальный заполнитель для ваших сценариев (обратите внимание также, как я закрепил свои жёстко прописанные ссылки на файл CSS с помощником URL):

<head runat="server"> 
    <title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /></title> 
    <link href="<%= Url.Content("~/Content/Site.css") %>" rel="stylesheet" type="text/css" /> 
    <script type="text/javascript" src="<%= Url.Content("~/scripts/MicrosoftAjax.js") %>"></script> 
    <script type="text/javascript" src="<%= Url.Content("~/scripts/MicrosoftMvcAjax.js") %>"></script> 
    <asp:ContentPlaceHolder ID="Scripts" runat="server" /> 
</head> 

, что вы могли бы переопределить в вашем вид:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="Scripts" runat="server"> 
    <script type="text/javascript"> 
     function success() { 
      alert('success'); 
      // TODO: do something with the object 
     } 
    </script> 
</asp:Content> 

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 
    <%= Ajax.ActionLink(
     "Delete", 
     "Delete", 
     new { id = 55 }, 
     new AjaxOptions { OnComplete = "success" } 
    ) %> 
</asp:Content> 
+0

@ добавил это, но все еще такой же вопрос – DotnetSparrow

+0

вы уверены, что это 2 приложения ASP.NET MVC и не ASP.NET MVC 3? Также посмотрите на консоль вашего браузера, чтобы узнать, могут ли быть некоторые ошибки js. –

+0

Да, я использую asp.net MVC 2 – DotnetSparrow

Смежные вопросы