0

私はasp.net MVC 2アプリケーションに取り組んでいます。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);
 }

しかし、リンクをクリックすると、レコードが削除されたと表示されます! アラートとして表示する代わりにブラウザで。いくつかのファイルがありませんか?

4

1 に答える 1

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 replacedjQueryの控えめなスクリプトによるものです。

サンプルプロジェクトをメールで送ってくれたので、問題が何であるかは明らかです。<title>あなたは明らかに機能しないあなたのページのタグの中にあなたの成功javascript関数を定義しました。

したがって、MasterPage内で、スクリプト用の特別なプレースホルダーを定義する必要があります(URLヘルパーを使用してCSSファイルへのハードコードされたリンクを修正した方法にも注意してください)。

<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>
于 2013-03-16T17:58:41.773 に答える