gpt4 book ai didi

asp.net-mvc - 有没有简单的方法在 Controller 操作生成的 url 中使用书签?

转载 作者:行者123 更新时间:2023-12-05 01:17:03 26 4
gpt4 key购买 nike

目前我正在使用 ASP.NET MVC 3 中的简单论坛模块,稍后我会将其添加到我的主应用程序中。链接到某些 block (如用于呈现线程回复的 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 重载之一: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);

不过请注意您的 URL 映射。上面的例子假设了方法

    public ActionResult ShowThread(int id, int? post)

在 HomeController 中,默认路由没有改变。否则你应该

  1. 调整 Controller 名称前的 URL(无 Controller ),或
  2. 更改您的默认路由以映射到 Controller 的名称。

关于asp.net-mvc - 有没有简单的方法在 Controller 操作生成的 url 中使用书签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13046483/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com