Asp.net mvc 在控制器操作中是否有使用书签的简单方法';s生成的URL?

Asp.net mvc 在控制器操作中是否有使用书签的简单方法';s生成的URL?,asp.net-mvc,Asp.net Mvc,目前我正在使用ASP.NET MVC 3中的简单论坛模块,稍后我会将其添加到我的主应用程序中。链接到某些块(如用于显示线程回复的div)的可能性非常有用 我找到了一些可以满足我需要的东西,我只是想知道是否还有更优雅、更简单的东西。我发现了一个使用ActionFilters的解决方案,因为我对MVC非常熟悉,所以我想找到一些更简单的解决方案(如果有的话)。我很快也会学习ActionFilters:) 以下是我所做的: public ActionResult ShowThread(int id, i

目前我正在使用ASP.NET MVC 3中的简单论坛模块,稍后我会将其添加到我的主应用程序中。链接到某些块(如用于显示线程回复的div)的可能性非常有用

我找到了一些可以满足我需要的东西,我只是想知道是否还有更优雅、更简单的东西。我发现了一个使用ActionFilters的解决方案,因为我对MVC非常熟悉,所以我想找到一些更简单的解决方案(如果有的话)。我很快也会学习ActionFilters:)

以下是我所做的:

public ActionResult ShowThread(int id, int? postID)
{

    var thread = db.ForumThreads.Find(id);
    if (postID != null)
    {
        return Redirect(Url.Action("ShowThread",new {id=id})+"#post-"+postID.ToString());
    }
    return View(thread);
}

我知道这很简单,但它正在发挥作用。此外,它不会检查postID是否有效,但这不是问题的一部分。

解决方案是使用一个RedirectToAction重载:。 也许,在您的情况下,下一个就可以了:
电话是:

return this.RedirectToAction("ShowThread", new { id = id, post = postID }); 返回这个.RedirectToAction(“ShowThread”,new{id=id,post=postID}); 另一个(更简单,但不是更安全的!)解决方案是格式化需要重定向到的URL,并使用redirect()方法,如下所示:

var redirectUrl = string.Format("/Home/ShowThread/{0}?post={1}", id, postID); return this.Redirect(redirectUrl); var redirectUrl=string.Format(“/Home/ShowThread/{0}?post={1}”,id,postID); 返回此.Redirect(重定向URL); 不过,请注意您的URL映射。上面的例子假设了这种方法

public ActionResult ShowThread(int id, int? post) 公共操作结果显示线程(int-id,int-post) 在HomeController中,默认路由尚未更改。否则你应该

  • 在控制器名称(不带控制器)前面调整URL,或
  • 将默认路由更改为映射到控制器名称。

  • 看到这个回复非常感谢。我在搜索框中寻找书签,没有考虑寻找锚。。。