2

ASP.NET MVC は初めてです。したがって、私の質問は少し素朴に見えるかもしれません。とにかく、私は自分のトピックに関する情報を何時間も探しましたが、結果はありません. ですから、あなたの助けにとても感謝しています。

これは私の問題です。

インデックス ビューには div があり、ユーザーがクリックするリンクに応じて、さまざまな部分ビューのコンテンツを配置します。

これがコードです。インデックス.cshtml:

<div id="dynamicContent"></div>

<a href="#" onclick="@String.Format("updateContent('{0}');", Url.Action("DynamicContent", "Agent", new {name = "AboutCbsrAgent"}))">About Cbsr Agent</a>

<a href="#" onclick="@String.Format("updateContent('{0}');", Url.Action("DynamicContent", "Agent", new {name = "ApplicationAreasOfCBSR"}))">Application Areas Of CBSR</a>

JavaScript:

function updateContent(contentUrl) {

    $.ajax({
        url: contentUrl,
        type: "GET",
        success: function (data) {
            $('#dynamicContent').html(data);
        }
    });
}

コントローラ:

public class AgentController : Controller
{
    //Index action
    public ActionResult DynamicContent(string name)
    {
        return PartialView(String.Format("Partial/" + name));
    }
}

したがって、すべてが正常に機能します。ユーザーがリンクをクリックすると、適切な部分ビューが div に読み込まれます。問題は、ブラウザのアドリー バーに次の URL が表示されることです。

私の質問: 部分ビューごとに一意の URL を生成する方法はありますか? 例: example.com/agent/partial/AboutCbsrAgent. また、このリンクをブラウザのアドレスバーに貼り付けたときに、全体ビューと必要な部分ビューが表示されるようにすることはできますか?

よろしくお願いします。

4

2 に答える 2

3

で 2 つの URL に対して2 つの個別のアクションを作成しAgentController、レンダリングする部分ビューの名前を渡すことができます。何かのようなもの:

public ActionResult AboutCbsrAgent() 
{
    ViewBag.MyPartialView = "AboutCbsrAgent";
    ....

    return View("Index");
}

次に、あなたのIndex.cshtml

<div id="dynamicContent">
    @Html.Partial(ViewBag.MyPartialView)
</div>

おそらくパスを調整する必要がありますが、アイデアは得られます。

于 2013-04-15T20:02:47.030 に答える
1

URLの使用を避けたい場合は、次のように#します。

<a href="javascript:void(0);" onclick="@String.Format("updateContent('{0}');", Url.Action("DynamicContent", "Agent", new {name = "AboutCbsrAgent"}))">About Cbsr Agent</a>

ユーザーが主に FF、Chrome、IE9 < であることがわかっている場合、またはブラウザーがサポートしていなくても構わない場合は、次を使用できます。history.pushState

ユーザーがその URL を再訪した場合、正しいコンテンツをロードするための解決策を見つける必要がありますが ( pushState)

于 2013-04-15T20:09:49.937 に答える