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

C# 如何使用RedirectToAction重定向到页面中的某个位置?,c#,asp.net-mvc-4,redirect,redirecttoaction,C#,Asp.net Mvc 4,Redirect,Redirecttoaction,我正在一个项目中使用MVC4、C#和visual studio ultimate 2013 提交表单后,我将用户重定向到索引页。但是,此网页有两个选项卡,我想将用户重定向到第二个选项卡,而不是第一个选项卡 我有一个名为Material的控制器,它有一个Index操作,将用户发送到Index视图 public ActionResult Index() { return View(); } 此视图由两个局部视图组成,\u材料和\u包装 @{ ViewBag.Title = "Ind

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

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

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

public ActionResult Index()
{
   return View();
} 
此视图由两个局部视图组成,
\u材料
\u包装

@{
    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>
如何解决我的问题?

您需要使用

重定向方法

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


#包是所谓的片段标识符,它将把浏览器的焦点放在带有包id的页面部分。

您只需编写一个Ajax调用传递给控制器,如果
成功
,则将
#选项卡
附加到url参数。例如,使用以下内容:

您不能使用类似于
重定向到操作的内容,因为它没有任何附加URL片段的功能。您可以使用类似于
重定向
的方法,只需获取一个URL字符串,然后使用URL帮助器为您动态生成操作URL:

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

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

查看一下,您还需要在url的末尾添加一个哈希,例如:www.foobar.com/fizz#packages如何向url添加一个#字符?它似乎没有被正确地转义:SAlso,我不明白这是如何解决我的问题的=(我使用了相同的方法,但在来到
#myDivId
string fragment = "Package";
Redirect("www.sitename.com/material/index#" + fragment);
return Redirect(Url.Action("Index", "Material") + "#Package");