重定向到另一个页面asp.net mvc

本文关键字:asp net mvc 另一个 重定向 | 更新日期: 2023-09-27 18:15:24

我正面临一个问题,当我想在创建页面后将用户重定向到另一个不是索引页面的页面时发生。

我尝试在客户端文件夹中创建另一个视图,然后用"成功"替换"索引",例如新页面的名称。

[HttpPost]
public ActionResult Create(Client client)
{
    if (ModelState.IsValid)
    {
        db.Clients.Add(client);
        db.SaveChanges();
        return RedirectToAction("Index"); // Here is the problem
    }
}

我也尝试了Redirect("~/Client/Success"),但它也不起作用。

谢谢你的帮助!

重定向到另一个页面asp.net mvc

您不仅需要创建名为"Success"的视图(实际上根本不需要),还需要在控制器中创建名为"Success"的操作:

[HttpPost]
public ActionResult Create(Client client)
{
    if (ModelState.IsValid)
    {
        db.Clients.Add(client);
        db.SaveChanges();
        return RedirectToAction("Success");
    }
    return View(); //Looks like you've missed this line because it shouldn't have compiled if result isn't returned in all code branches.
}
public ActionResult Success(Client client)
{
    //...
    return View();//By default it will use name of the Action ("Success") as view name. You can specify different View if you need though.
}

但是我不会说使用重定向只是为了显示成功的结果是一个好主意。你最好像之前那样在Client文件夹中创建成功视图(假设你的控制器名为"ClientController"),然后返回view result而不是Redirect:

[HttpPost]
public ActionResult Create(Client client)
{
    if (ModelState.IsValid)
    {
        db.Clients.Add(client);
        db.SaveChanges();
        return View("Success");
    }
    return View(); //Looks like you've missed this line because it shouldn't have compiled if result isn't returned in all code branches.
}

可以:

return RedirectToAction("Success","Client");

其中Success是您的action name, Client是您的controller name

如果你想重定向到同一控制器的成功操作,那么:

return RedirectToAction("Success");

你的动作应该像这样在ClientController:

public ActionResult Success()
{
  return View();
}

你正在使用:

return RedirectToAction("Index");

这将重定向到Index actionresult在相同的controller

看一下该方法的重载。您不是重定向到URL,而是重定向到操作。这将重定向到当前控制器上的Index动作:

return RedirectToAction("Index");

或者这将重定向到Client控制器上的Success动作:

return RedirectToAction("Success", "Client");

您可以尝试这样的Ajax请求:

 $('#myButton').click(function () {
            var url = '/MyControllerName/MyPage';
            var $Param = $('#SomeParam').val();     
            $.ajax({
                url: url,
                type: 'POST',
                cache: false,
                data: {
                   Param: $Param             
                }
            })