如何使用mvc返回视图和模型,并保留一些url参数

本文关键字:保留 参数 url 模型 mvc 何使用 返回 视图 | 更新日期: 2023-09-27 18:27:10

我知道我可以用我的模型返回我的视图,如下所示:

 public ActionResult Finish()
 {
     //do stuff
     var model = new ModelObject();
     //add stuff to model         
     return View("Execute", model);
 }

然而,我在向我的url添加内容时遇到了问题。我需要将带有此参数的视图返回到我的url末尾(它基本上可以帮助我导航到页面上的选项卡):

'?tab=tab-survey'

有什么办法我能做到这一点吗?我尝试使用Redirect和RedirectToAction,但没有任何运气:

//I get an error when I add this
return RedirectToAction("/Task/ControllerName/Execute/" + id + "?tab=tab-survey", model);

如何使用mvc返回视图和模型,并保留一些url参数

实现所需功能的最简单方法是使用ViewBag()。在控制器中,可以引用ViewBag.Tab = "tab-survey";,然后在视图中,可以将@ViewBag.Tab用作javascript中的值项或任何需要的项。

您应该能够使用MVC的"溢出"功能来构建您的URL,如下所示:

return RedirectToAction( new {controller="ControllerName", 
                              action="Execute", id=id, tab="tab-survey"});

任何与路由项匹配的变量都将得到适当的处理,任何与路由值不匹配的变量将被附加到url的末尾。

如果你不介意使用AJAX,你可以在成功回调中这样做:

$.get("/Controller/Action", function(data) {
    //do something with data
    window.location.href = "/Task/Controller/Execut?tab=tab-survey"
    });