如何使用RedirectToAction将重定向到页面中的某个位置

本文关键字:位置 RedirectToAction 何使用 重定向 | 更新日期: 2023-09-27 18:28:51

我在一个项目中使用MVC4、C#和visual studio ultimate 2013。

我在提交表单后将用户重定向到索引页。但是,此网页有两个选项卡,我想将用户重定向至第二个选项卡,而不是第一个选项卡。

我有一个名为Material的控制器,它有一个Index操作,它将用户发送到Index视图。

public ActionResult Index()
{
   return View();
} 

该视图由两个局部视图_Materials_Packages组成。

@{
    ViewBag.Title = "Index";
}
<div class="tabbable">
    <ul class="nav nav-tabs">
        <li class="active"><a href="#Materials" data-toggle="tab">Materials</a></li>
        <li><a href="#Packages" data-toggle="tab">Packages</a></li>
    </ul>
    <div class="tab-content">
        <div class="tab-pane active" id="Materials">
            @Html.Action("Materials", "Material")
        </div>
        <div class="tab-pane" id="Packages">
            @Html.Action("Packages", "Package")
        </div>
    </div>
</div>

在应用程序的另一个部分执行了一系列操作后,我将用户重定向到/Material页面,再重定向到第二个选项卡,但我不知道该怎么做!

目前我正在使用这个代码,它总是重定向到第一个选项卡:

return RedirectToAction("Index", "Material");

我该如何解决我的问题?

如何使用RedirectToAction将重定向到页面中的某个位置

不能使用类似RedirectToAction的东西,因为它没有任何附加URL片段的功能。您可以使用类似Redirect的东西,它只需要一个URL字符串,然后使用URL帮助程序仍然动态地为您生成操作URL:

return Redirect(Url.Action("Index", "Material") + "#Package");

换句话说,Url.Action将为您生成主URL,并将其作为字符串返回。然后,您可以在最终重定向之前将片段附加到此字符串中。

您需要使用

重定向方法

Redirect("www.sitename.com/material/index#Package");

string fragment = "Package";
Redirect("www.sitename.com/material/index#" + fragment);

#Package是所谓的片段标识符,它将使您的浏览器集中在id为Package的页面部分。

您可以简单地编写一个Ajax调用传递给控制器,如果是success,则将#tab附加到url参数。例如,使用这个: