【问题标题】:ASP.NET MVC. Specific URL for partial viewsASP.NET MVC。部分视图的特定 URL
【发布时间】:2013-04-15 17:13:53
【问题描述】:

我是 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:example.com/Agent# 无论我点击什么链接。

所以我的问题是:有没有办法为每个部分视图生成唯一的 URL?例如:example.com/agent/partial/AboutCbsrAgent。是否有可能使当我将此链接粘贴到浏览器的地址栏中时,将显示整个视图和 NECESSARY 部分视图?

提前感谢您的帮助!

【问题讨论】:

    标签: asp.net-mvc url partial-views


    【解决方案1】:

    您可以在 AgentController 中为这两个 URL 创建两个单独的操作,并传递要呈现的局部视图的名称。比如:

    public ActionResult AboutCbsrAgent() 
    {
        ViewBag.MyPartialView = "AboutCbsrAgent";
        ....
    
        return View("Index");
    }
    

    然后在你的Index.cshtml:

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

    您可能需要调整路径,但您明白了。

    【讨论】:

    • 非常感谢!!这是简单而美丽的解决方案!
    【解决方案2】:

    如果您想避免在您的网址中使用#

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

    如果你知道你的用户主要是FF、Chrome、IE9browser doesn't support 它,你可以使用history.pushState

    尽管如果用户重新访问该网址(使用pushState),您仍然需要找到加载正确内容的解决方案

    【讨论】:

    • 谢谢!我真的不知道这个功能。
    • 对不起,我很乐意这样做,但我是第一次来这里,所以我收到这条消息:“投票需要 15 声望”:( 当我得到 15声誉点,我会投票!:)
    • 再次感谢您的帮助!投票:)
    猜你喜欢
    • 2011-04-26
    • 2019-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    相关资源
    最近更新 更多