2012-05-01 81 views
1

我在_Layout.cshtml中獲得了一個jquery引用。它看起來並沒有像我在我的Index.cshtml頁面那樣工作:/ Home/GetSquareRoot沒有命中? (它的工作原理,當我在index.cshtml取消對jQuery的參考,雖然)爲什麼jQuery不適用於mvc 3應用程序?

ViewStart.cshtml

@{ 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

Index.cshtml

@{ 
    ViewBag.Title = "Home Page"; 
} 
<h2>@ViewBag.Message</h2> 
<p> 
    To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website"> 
     http://asp.net/mvc</a>. 
</p> 

@*<script src="../../Scripts/jquery-1.5.1.min.js" type="text/javascript"></script>*@ 

<script type="text/javascript"> 
    function calculateSquareRoot(numberToCalculate) { 
     $.ajax({ 
      type: 'GET', 
      url: '/Home/GetSquareRoot', 
      data: { number: numberToCalculate }, 
      success: function (data) { alert(data.result); } 
     }); 
    } 

</script> 

    <button type="button" onclick="calculateSquareRoot(9);"> 
     Calculate Square</button> 

_Layout.cshtml

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8" /> 
    <title>@ViewBag.Title</title> 
    <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" /> 
    <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script> 
    <script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script> 
    <script src="../../Scripts/jquery-1.5.1-vsdoc.js" type="text/javascript"></script> 
</head> 

<body> 
    <div class="page"> 
     <header> 
      <div id="title"> 
       <h1>My MVC Application</h1> 
      </div> 
      <div id="logindisplay"> 
       @Html.Partial("_LogOnPartial") 
      </div> 
      <nav> 
       <ul id="menu"> 
        <li>@Html.ActionLink("Home", "Index", "Home")</li> 
        <li>@Html.ActionLink("About", "About", "Home")</li> 
       </ul> 
      </nav> 
     </header> 
     <section id="main"> 
      @RenderBody() 
     </section> 
     <footer> 
     </footer> 
    </div> 
</body> 
</html> 

homecontroller

public JsonResult GetSquareRoot(long number) 
     { 
      var square = Math.Sqrt(number); 
      return Json(new { result = square }, JsonRequestBehavior.AllowGet); 
     } 
+0

@ user603007可能是你可以試試我的解決方案.... –

回答

1

它有效,當你有jQuery引用註釋掉,因爲你的_Layout.cshtml文件也有引用(只是說明事實,我意識到你可能知道這一點)。

這也意味着,你有你的路由設置正確,並且有沒有錯URL「​​/主頁/ GetSquareRoot」

的代碼看起來不錯,唯一未知的,我可以看到的是,.. /../Scripts/實際上與〜/ Scripts /相同(取決於你的頁面的URL是什麼樣的)。

我會使用谷歌瀏覽器檢查頁面上的腳本錯誤:轉到您的頁面,右鍵單擊並在頁面上檢查元素,然後檢查您是否沒有任何腳本錯誤(右下方的如果你這樣做,檢查員將會有一個紅圈)。

如果您有腳本錯誤可能會阻止AJAX調用運行。

+0

沒有腳本錯誤 – user603007

+0

現在運轉:我刪除了 from layout.cshtml! – user603007

0

當提到應用程序中的硬編碼內容URL時,使用Url.Content總是一個好主意。

因此,不是這樣的:

<script src="../../Scripts/jquery-1.5.1-vsdoc.js" type="text/javascript"></script> 

使用本:

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

這種方式將始終使用正確的URL到jQuery的腳本文件,無論什麼頁面的網址是。

0

試試這個...

public JsonResult GetSquareRoot(long? number) 
     { 
      var square = Math.Sqrt(number); 
      return Json(new { result = square }, JsonRequestBehavior.AllowGet); 
     } 
相關問題