1

私は自分の手とAsp.net MVC 4を試してみて、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 が含まれていない場合にこれが時々発生することを読んでいましたが、そのファイルのコピーがどこにも見つかりません。

4

1 に答える 1

2

MicrosoftAjax.debug.js を含めない場合に、これが時々発生することを読んでいました。

jquery.unobtrusive-ajax.js実際には、スクリプトを含める必要があります。MicrosoftAjax.debug.jsASP.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)
于 2013-05-14T15:37:26.837 に答える