c# - RedirectToAction 没有正确重定向到我需要的 routeValue
问题描述
我的控制器中有一个POST
用于在数据库中创建新条目的方法。操作完成后,它应该将我重定向到 PhaseController -> Index -> 我使用的 Id 的值TempData
。请参阅下面的Create()方法:
相位控制器.cs
[HttpPost]
public IActionResult Create(Phase phase)
{
int releaseId = (int)TempData["id"];
string connectionString = Configuration["ConnectionStrings:DefaultConnection"];
using (SqlConnection connection = new SqlConnection(connectionString))
{
string sql = "CreatePhase";
using (SqlCommand command = new SqlCommand(sql, connection))
{
command.CommandType = CommandType.StoredProcedure;
// adding parameters
SqlParameter parameter = new SqlParameter
{
ParameterName = "@Name",
Value = phase.Name,
SqlDbType = SqlDbType.VarChar,
Size = 50
};
command.Parameters.Add(parameter);
parameter = new SqlParameter
{
ParameterName = "@ReleaseId",
Value = releaseId,
SqlDbType = SqlDbType.Int
};
command.Parameters.Add(parameter);
connection.Open();
command.ExecuteNonQuery();
connection.Close();
}
}
return RedirectToAction("Index", "Phase", releaseId);
}
如您所见,我使用return RedirectToAction("Index", "Phase", releaseId);
which 我猜它应该将我重定向到localhost/Phase/Index/1
. 相反,我只被重定向到/Phase
(我想这与 Phase/Index 相同)。下面我还将包括
创建.cshtml
@model Phase
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>ADO - Create Phase</title>
<link rel="stylesheet" asp-href-include="lib/bootstrap/dist/css/*.min.css" />
</head>
<body>
<div class="container-fluid">
<h1>Create a Phase</h1>
<form method="post">
<div hidden class="form-group">
<label asp-for="Id"></label>
<input class="form-control" asp-for="Id" />
</div>
<div class="form-group">
<label asp-for="Name"></label>
<input class="form-control" asp-for="Name" />
</div>
<div hidden class="form-group">
<label asp-for="ReleaseId"></label>
<input class="form-control" asp-for="ReleaseId" />
</div>
<div class="text-center panel-body">
<button type="submit" class="btn btn-sm btn-primary">Create</button>
</div>
</form>
</div>
</body>
</html>
编辑:索引方法
public ActionResult Index(int id)
{
TempData["id"] = id;
List<Phase> phaseList = new List<Phase>();
string connectionString = Configuration["ConnectionStrings:DefaultConnection"];
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
string sql = "ReadPhases";
SqlCommand command = new SqlCommand(sql, connection);
command.CommandType = CommandType.StoredProcedure;
SqlParameter parameter = new SqlParameter
{
ParameterName = "@ReleaseId",
Value = id,
SqlDbType = SqlDbType.VarChar,
Size = 50
};
command.Parameters.Add(parameter);
using (SqlDataReader dataReader = command.ExecuteReader())
{
while (dataReader.Read())
{
Phase phase = new Phase();
phase.Id = Convert.ToInt32(dataReader["Id"]);
phase.Name = Convert.ToString(dataReader["Name"]);
phase.ReleaseId = Convert.ToInt32(dataReader["ReleaseId"]);
phaseList.Add(phase);
}
}
connection.Close();
}
return View(phaseList);
}
这里出了什么问题?我没有被正确重定向的原因可能是什么?
解决方案
加上我的评论,我认为您应该像这样使用它:
return RedirectToAction("Index", "Phase", new { id = releaseId });
推荐阅读
- javascript - 如何使用 ajax 复制 Postman POST API 请求
- gem5 - 尝试使用 Gem5 构建 X86 机器
- python - 多个函数中的“全局变量”
- html - how to make a div wrapped in a flex container such that it allows other element to be in same row using html css?
- mysql - 合并2请求SQL
- javascript - 光标 - 动画 javascript
- c# - 如何将 d 的索引返回到其错误消息
- angular - 如何在函数 gleich 中使用变量 rechenoperator2?
- javascript - 如果数组包含重复项,则将两个值合并为一个
- entity-framework-core - 使用 GROUP BY 检索组中的最新行