2013-05-14 82 views
1

我想我的手和Asp.net MVC 4,並有一個Ajax表單的問題返回一個全新的頁面,而不是隻更新一個div。Ajax表單重新加載/返回新頁面而不是更新

這裏的剃刀的html代碼:

<div class="All"> 
    <div class="Search"> 
     @using (Ajax.BeginForm(new AjaxOptions { UpdateTargetId = "CurrentSku" })) 
     { 
     @Html.Label("Enter Sku:") 
     @Html.TextBox("textBox1") 
     <input type="submit" value="Find" /> 
     } 
    </div> 
    <div id="CurrentSku"> 
     <span>No Sku selected.</span> 
    </div> 

和這裏的控制器:

public ActionResult Index() 
    { 
     // Pay no attention to this, just a place holder 
     return View(db.xInventoryExt.Take(1)); 
    } 

    [HttpPost] 
    public ActionResult Index(string textBox1) 
    { 
     if (db.xInventoryExt.Count(a => a.InvtID == textBox1) < 1) 
     { 
      return Content("Sku not found.", "text/html"); 
     } 

     var ret = db.xInventoryExt.First(b => b.InvtID == textBox1); 

     return Content(ret.ToString(), "text/html"); 
    } 

我讀這個時候不包括MicrosoftAjax.debug.js有時會發生,但我無法找到該文件的任何地方的副本。

回答

2

我讀這個時候不包括MicrosoftAjax.debug.js

有時會發生其實你需要包括jquery.unobtrusive-ajax.js腳本。 MicrosoftAjax.debug.js是舊版ASP.NET MVC的一部分,現在已經完全過時。所以基本上,如果你正在使用ASP.NET MVC 4並使用默認捆綁(~/App_Start/BundleConfig.cs),在你的_Layout.cshtml你可以簡單地具有對DOM的末尾以下內容:

@Scripts.Render("~/bundles/jquery") 
@Scripts.Render("~/bundles/jqueryval") 
@RenderSection("scripts", required: false) 

現在你的Ajax *助手會工作,你也可以啓用不引人注目的jQuery驗證。這會發生的,因爲這~/bundles/jqueryval包的定義方式:

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
      "~/Scripts/jquery.unobtrusive*", 
      "~/Scripts/jquery.validate*")); 

如果不使用捆綁,然後簡單地包括按順序對應的腳本:

<script type="text/javascript" src="~/scripts/jquery-1.8.2.js"></script> 
<script type="text/javascript" src="~/scripts/jquery.unobtrusive-ajax.js"></script> 
@RenderSection("scripts", required: false) 
+0

這是增加了,仍然有同樣的問題。雖然我沒有使用默認的捆綁包,所以這可能是問題所在。我已經添加了微軟jQuery Unobtrusive Ajax nuget包。 – 2013-05-14 15:39:37

+0

哦,如果你不使用包,你需要手動添加腳本。我已經更新了我的答案以示例。確保在您的項目中添加了「Microsoft jQuery Unobtrusive Ajax」NuGet包之後,''jquery.unobtrusive-ajax.js'腳本已經添加到'〜/ Scripts'文件夾中。還要確保首先包含'jquery.js',因爲它取決於它。 – 2013-05-14 15:41:44

+0

謝謝!我會給它一個鏡頭。 – 2013-05-14 15:42:19

相關問題