Chuyển hướng đến hàm băm từ bộ điều khiển bằng cách sử dụng “RedirectToAction”


87

Xin chào, tôi muốn trả về một mỏ neo từ Mvc Controller

Tên bộ điều khiển = DefaultController;

public ActionResult MyAction(int id)
{
        return RedirectToAction("Index", "region")
}

Vì vậy, url khi được chuyển hướng đến chỉ mục là

http://localhost/Default/#region

Vậy nên

<a href=#region>the content should be focus here</a>

Tôi không hỏi bạn có thể làm như thế này không: Làm cách nào để thêm thẻ liên kết vào URL của tôi?



1
Có thể có bản sao của ASP.Net MVC RedirectToAction với
mỏ

Câu trả lời:


133

Tôi đã tìm thấy cách này:

public ActionResult MyAction(int id)
{
    return new RedirectResult(Url.Action("Index") + "#region");
}

Bạn cũng có thể sử dụng theo cách dài dòng này:

var url = UrlHelper.GenerateUrl(
    null,
    "Index",
    "DefaultController",
    null,
    null,
    "region",
    null,
    null,
    Url.RequestContext,
    false
);
return Redirect(url);

http://msdn.microsoft.com/en-us/library/ee703653.aspx


1
Bạn là một người bạn đời thông minh! Đây là những gì tôi đã kết thúc: return new RedirectResult (Url.Action ("Index", new {PKMvrErantyeeId = MvrId}) + "#region");
ẩn

1
+1 vì sử dụng RedirectResult thay vì gọi phương thức Redirect (..). Trong MVC đang được phát hành và IIS6, bạn có thể gặp các trường hợp ngoại lệ do chuyển hướng vì một yêu cầu có thể đã được chuyển hướng hoặc một phần của hành động con hoặc nội dung đã được gửi.
Jaans

2
Trong MVC 5, khi sử dụng RedirectToAction, nó dường như thoát khỏi # thành% 23. Không có ai khác trải qua điều này?
jakejgordon

Đối với tôi, nó sẽ hoạt động trở lại khi tôi sử dụng cùng một phương pháp.
Zeeshan Ahmad Khalil

14

Câu trả lời tuyệt vời gdoron. Đây là một cách khác mà tôi sử dụng (chỉ để thêm vào các giải pháp có sẵn ở đây).

return Redirect(String.Format("{0}#{1}", Url.RouteUrl(new { controller = "MyController", action = "Index" }), "anchor_hash");

Rõ ràng, với câu trả lời của gdoron, điều này có thể trở nên gọn gàng hơn với những điều sau đây trong trường hợp đơn giản này;

return new RedirectResult(Url.Action("Index") + "#anchor_hash");

Tùy chọn đầu tiên hoạt động tốt nếu hành động của bạn nằm trong bộ điều khiển khác.
Chad Hedgcock

9

Một cách đơn giản trong lõi dot net

public IActionResult MyAction(int id)
{
    return RedirectToAction("Index", "default", "region");
}

Các lợi tức / mặc định / chỉ mục # khu vực ở trên . Tham số thứ 3 là đoạn mà nó thêm vào sau dấu #.

Tài liệu của Microsoft - ControllerBase


4

Để mở rộng câu trả lời của Squall: Sử dụng nội suy chuỗi giúp mã sạch hơn. Nó cũng hoạt động cho các hành động trên các bộ điều khiển khác nhau.

return Redirect($"{Url.RouteUrl(new { controller = "MyController", action = "Index" })}#anchor");
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.