1

部分ビューは正しい場所に移動せず、常に新しいページが開きます。

正しい場所 (index.cshtml) で部分ビューを開く必要があります。修正方法は?

public class HomeController : Controller
{ 
  public PartialViewResult LatestNews()
  {
     var p = new Person();
     p.FirstName = " NAME " + DateTime.Now; // To test only
     return PartialView("_News", p);
  }

インデックス.cshtml

@Ajax.ActionLink("Click here!", "LatestNews", "Home", 
   new AjaxOptions { UpdateTargetId = "latestNewsDiv", InsertionMode = InsertionMode.Replace, HttpMethod = "GET", LoadingElementId = "progress" })

<div id="latestNewsDiv">
</div>

<div id="progress">
    <p>Loading...</p>
</div>

_News.cshtml共有フォルダの下にあります

@model MvcApplication1.Models.Person
<h2>News !!!</h2>
<div>
    @Model.FirstName
</div>

アップデート


ダリン・ディミトロフに感謝

最初に私は入れました

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

HEADセクションで

bodyしかし、タグの一番下に置いた後、@Scripts.Render("~/bundles/jquery")正常に機能しています!

  @Scripts.Render("~/bundles/jquery")
        <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
         @RenderSection("scripts", required: false)
    </body>
</html>
4

1 に答える 1

4

ページにスクリプトが含まれていることを確認jquery.unobtrusive-ajax.jsしてください。そして、このスクリプトの組み込みは明らかに の後に行われるべきjquery.jsです。また、ASP.NET MVC 4 バンドルを使用している場合は~/bundles/jqueryval、jquery の直後に、レイアウトでバンドルを単純にレンダリングする必要があります。

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

jquery.unobtruisve-ajax.jsjquery の後のマークアップにスクリプトが含まれていない場合、Ajax.*ヘルパーはほとんど役に立ちません。対応するDOM要素にダミーのHTML5data-*属性を生成するだけですが、適切なスクリプトがなければ、それらの属性を解釈して要素をAJAX化することはまったくありません.

于 2013-04-22T20:44:18.027 に答える