73

私はこの部分的な見方に非常に混乱しています。

メイン ビュー内に部分ビューをロードしたいと考えています。

これが簡単な例です。

Homecontroller Index アクションの Index.cshtml をメイン ページとして読み込んでいます。

index.cshtml で、リンクを作成しています

@Html.ActionLink("load partial view","Load","Home")

HomeController で、という新しいアクションを追加しています

public PartialViewResult Load()
{
    return PartialView("_LoadView");
}

_LoadView.cshmtl で

<div>
    Welcome !!
</div>

しかし、プロジェクトを実行すると、 index.cshtml が最初にレンダリングされ、「部分ビューの読み込み」リンクが表示されます。それをクリックすると、_LoadView.cshtml からのウェルカム メッセージを index.cshtml にレンダリングする代わりに、新しいページに移動します。

何が間違っている可能性がありますか?

注: AJAX を介してページをロードしたくない、または Ajax.ActionLink を使用したくない。

4

7 に答える 7

155

Html.Actionメインビュー内に部分ビューを直接ロードする場合は、ヘルパーを使用できます。

@Html.Action("Load", "Home")

または、ロードアクションを実行したくない場合は、HtmlPartialAsyncヘルパーを使用します。

@await Html.PartialAsync("_LoadView")

を使用する場合は、次のようAjax.ActionLinkに置き換えますHtml.ActionLink

@Ajax.ActionLink(
    "load partial view", 
    "Load", 
    "Home", 
    new AjaxOptions { UpdateTargetId = "result" }
)

もちろん、パーシャルが表示されるページにホルダーを含める必要があります。

<div id="result"></div>

また、以下を含めることを忘れないでください。

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

Ajax.*ヘルパーを有効にするためにメインビューで。また、web.configで控えめなJavaScriptが有効になっていることを確認してください(デフォルトで有効になっているはずです)。

<add key="UnobtrusiveJavaScriptEnabled" value="true" />
于 2011-09-03T21:13:49.090 に答える
15

私はレニエルとまったく同じ問題を抱えていました。ここで提案された修正と、他の多くの場所を試しました。最終的に私のために働いたのは、単に追加することでした

@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryval")

私のレイアウトに...

于 2013-07-06T16:16:31.993 に答える
5

でそれを行う場合@Html.ActionLink()、PartialViewのロードは、アンカー要素をクリックしたときの通常のリクエストとして処理されます。つまり、PartialViewResultメソッドの応答で新しいページをロードします。
すぐにロードする場合は、@Html.RenderPartial("_LoadView")またはを使用します@Html.RenderAction("Load")
ユーザーインタラクション(つまりリンクをクリック)時にそれを実行したい場合は、AJAX->を使用する必要があります@Ajax.ActionLink()

于 2011-09-03T21:17:45.323 に答える
5

私にとって、これは NuGet 経由で AJAX Unobtrusive ライブラリをダウンロードした後に機能しました:

 Search and install via NuGet Packages:   Microsoft.jQuery.Unobtrusive.Ajax

jquery と AJAX Unobtrusive への参照をビューに追加するよりも:

@Scripts.Render("~/bundles/jquery")
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"> </script>

次に、Ajax ActionLinkdivで結果をレンダリングします。

@Ajax.ActionLink(
    "Click Here to Load the Partial View", 
    "ActionName", 
    null, 
    new AjaxOptions { UpdateTargetId = "toUpdate" }
)

<div id="toUpdate"></div>
于 2015-01-05T14:08:46.073 に答える
3

ビュー内に部分ビューのコンテンツを入力する場合は、使用できます

@Html.Partial("PartialViewName")

また

{@Html.RenderPartial("PartialViewName");}

サーバーリクエストを作成してデータを処理し、そのデータで満たされたメインビューに部分ビューを返す場合は、使用できます

...
    @Html.Action("Load", "Home")
...

public PartialViewResult Load()
{
    return PartialView("_LoadView");
}

ユーザーがリンクをクリックしてから、使用できる部分ビューのデータを入力する場合:

@Ajax.ActionLink(
    "Click Here to Load the Partial View", 
    "ActionName", 
    "ControlerName",
    null, 
    new AjaxOptions { UpdateTargetId = "toUpdate" }
)
于 2017-03-15T04:21:19.327 に答える
1

RenderParital は、パフォーマンスのために使用する方が優れています。

{@Html.RenderPartial("_LoadView");}
于 2016-07-01T05:44:40.600 に答える
1

上記への小さなtweek

@Ajax.ActionLink(
    "Click Here to Load the Partial View", 
    "ActionName", 
    "ControlerName",
    null, 
    new AjaxOptions { UpdateTargetId = "toUpdate" }
)

<div id="toUpdate"></div>
于 2015-02-21T18:41:14.620 に答える