目前我正在使用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是否有效,但它不是问题的一部分。
答案 0 :(得分:0)
解决方案是使用RedirectToAction重载之一:http://msdn.microsoft.com/en-us/library/dd470154(v=vs.108).aspx。
也许,在你的情况下,下一个会做:http://msdn.microsoft.com/en-us/library/dd460291(v=vs.108).aspx
电话会是:
return this.RedirectToAction("ShowThread", new { id = id, post = postID });
另一个(更简单,但不安全!)解决方案是格式化您需要重定向到的URL并使用Redirect()方法,如下所示:
var redirectUrl = string.Format("/Home/ShowThread/{0}?post={1}", id, postID); return this.Redirect(redirectUrl);
但请注意您的网址映射。上面的例子假设方法
public ActionResult ShowThread(int id, int? post)
在HomeController中,默认路由尚未更改。否则你应该