0

私はこれに対する答えを見つけられず、いくつかの方法を試しました。どんな助けでも感謝します!! ajaxスクリプトを使用して、クリックするたびにリロードせずにページを更新するビューがあります。以下はコードです。しかし、部分ビュー全体が生成された後、ユーザーが現在いるコントローラーに関連付けられていないリンクをクリックすると、完全に別のビューをリダイレクトする必要があります。

私の見解

    @model IMONLP.Models.Search
    @{
        ViewBag.Title = "Search";
    }
    <script src="~/Scripts/jquery-1.8.2.min.js"></script>
    <script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>


        @using (Ajax.BeginForm("Search", new AjaxOptions() { UpdateTargetId = "results" 
}))
        {
            <br />        
            @Html.TextBoxFor(m => m.search_text, new { style = "width: 200px;" })
            <input type="submit" value="search" />
        }

           @Ajax.ActionLink("Try Demo", "PLNHK", "PLNHK", new AjaxOptions { })
       // this ajax link should redirect to different view,

    <div id="results">
        @if (!String.IsNullOrEmpty(@Model.search_text))
        {
            Html.RenderPartial("Searchprocess", Model);
        }
    </div>

私のコントローラー:

public ActionResult Search(Search s)
        {
            //do something

            return PartialView("Searchprocess", s);    
        }

public ActionResult Selected(Search s)
        {
            //DO something
            return PartialView("Selected", s);
        }

上記の "TryDEMO" "PLNHK" ajax アクション リンクは、新しいコントローラーと新しいアクションにリダイレクトし、そのアクションによって返されるビューを返す必要があります。それをクリックするたびに、そのコントローラーに移動してから対応するビューに移動することがわかりましたが、再び古いページに戻ります。Ajax の代わりに @html.actionlink を使用しましたが、このエラーが発生しました

The "RenderBody" method has not been called for layout page "~/Views/PLNHK/PLNHK.cshtml".

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

編集: PLNHK.cshtml を作成しました。これをデバッグしようとしている間、コントロールは PLNHK コントローラーに行き、次に PLNHK ビュー (PLNHK.cshtml) に行き、そのページのすべてのステップを解析しますが、最終的に出力が古いページになります。ページの前にある Ajax スクリプトが原因ではないかと考えていました。

4

0 に答える 0