【问题标题】:MVC Controller Redirect To Jquery TabMVC 控制器重定向到 Jquery 选项卡
【发布时间】:2011-03-15 07:41:49
【问题描述】:

我在 MVC 中有一个控制器,在成功创建命令后需要将视图重定向到 jquery 制作的联系人选项卡。这是我的控制器:

[HttpPost]
    public ActionResult Create(Contact newContact, int id)
    {
        try
        {
            if (ModelState.IsValid)
            {
                gogoDB.AddToContacts(newContact); 
                gogoDB.SaveChanges();

                return RedirectToAction("Index" + "/" + id, "Client");
            }
            else
            {
                return View(newContact);
            }
        }
        catch
        {
            return View(newContact);
        }

我要重定向到的网址是

http://localhost:xxxxx/Client/Index/2#contacts

当前代码 ReturnToAction("Index" + "/" + id, Client") 重定向到

http://localhost:xxxxx/Client/Index/2

这不是我想要的。我也尝试过 Redirect("Client/Index/" + id + "#contacts") 但我得到的网址是这样的:

http://localhost:xxxxx/Contact/Create/Client/Index/2#contacts

如您所见,问题在于我正在从联系人控制器内部调用由客户端控制器生成的页面。 id 在所有示例中都适用。

请帮忙!

【问题讨论】:

  • 您是否尝试过使用 return RedirectPermanent() 并对标签的 URL 进行硬编码?
  • 硬编码不起作用,因为返回 url 中有一个动态生成的 id。

标签: model-view-controller jquery-ui controller jquery-ui-tabs


【解决方案1】:

我认为你可以这样做。

查看

 $('#SpecificRedirectTest').click(function() {
window.location="/Controller/Index?Id="+ $('myId').val() +"&redirect2Tab=true";
  });

控制器

public ActionResult Index (int Id ,  bool? redirect2Tab)
{
  var client = this._myService.GetById (Id);
  var fvm = this.EditClientFormViewModel (client, MyTabs.EditTab);

if (redirect2Tab.HasValue) {
  if (redirect2Tab.Value) {
    fvm = this.EditClientFormViewModel  (client, MyTabs.SalesHistoryTab);
  }
}
return View("ViewEdit", fvm);
 }

【讨论】:

  • 感谢您对 Koi 的回复,但我们远离了部分视图,因此我无法测试解决方案,因为我们不再使用它们。
猜你喜欢
  • 1970-01-01
  • 2012-12-10
  • 1970-01-01
  • 2015-05-19
  • 1970-01-01
  • 1970-01-01
  • 2013-06-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多