私はこれに対する答えを見つけられず、いくつかの方法を試しました。どんな助けでも感謝します!! 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 スクリプトが原因ではないかと考えていました。