mvc 将操作 link 重定向到具有 id 的特定视图
mvc redirect action link to a specific view with id
我有一个名为 (Term1score) 的控制器,在控制器内部我有两种不同的操作方法(Index_Test,EditScore).
现在在我的 (Index_Test) 的视图中,我有 Html action-link 将重定向到 (Edit Score)现在我想要的是它将重定向到特定的 ID(示例如果(Index_Test)SubjectId=1 然后它将转到(EditScore)SubjectID= 1,)正如你在我的控制器中看到的那样,它们都针对相同的 SubjectID,知道如何解决这个问题吗?感谢并感谢您的回复..
控制器:
public ActionResult Index_Test(int? id)
{
List<Term1Score> score = db.Term1Scores.Where(x => x.SubjectID == id).ToList();
return View(score);
}
[HttpGet]
public ActionResult EditScore(int? id)
{
List<Term1Score> score = db.Term1Scores.Where(x => x.SubjectID== id).ToList();
return View(score);
}
我试图将其放入 Index_Test 视图中。
这一个工作,但它总是只转到 Id 1-如何使这个自动更改?
@Html.ActionLink("Edit", "EditScore", "Term1Score", new { id= "1" }, null
我试了几次还是不行。
@Html.ActionLink("Edit", "EditScore", "Term1Score", new { id=@Model.id }, null)
@Html.ActionLink("Edit", "EditScore", "Term1Score", new { testId=testId.id }, null)
@Html.ActionLink("Edit", "EditScore", "Term1Score", new { id= "" }, null)
编辑:根据评论
i'm targeting one link to edit all now with the code u gave its
looping one by one, and Editscore is a Multi editable table
在这种情况下,您可以获取第一项并使用它 SubjectID
@model List<Term1Score>
@{
var id = Model.FirstOrDefault() != null ? Model.First().SubjectId : (int?) null;
}
@Html.ActionLink("Edit", "EditScore", "Home", new { id = id }, null)
另一种选择是创建一个具有 2 个属性的视图模型,一个用于 Id,一个用于 Term1Score 的列表,并使用它来将数据传输到您的视图。
您的 Index_Test
操作方法正在将 Term1Score 对象列表传递给视图,因此您需要遍历它们并呈现编辑 link
EditScore
操作方法参数名称是 id
。因此,请确保在使用 Html.ActionLink 帮助程序构建锚标记时,使用 id
作为路由值对象键。
所以在你的 Index_Test.cshtml
@model List<Term1Score>
@foreach (var testId in Model)
{
<p>
@Html.ActionLink("Edit", "EditScore", "Home", new { id = testId.Id }, null)
</p>
}
此外,在 EditScore
方法中,您可能想要编辑单个记录,目前您返回的是与前一个方法相同的集合。您可能希望获得与该 ID 匹配的单个记录。
[HttpGet]
public ActionResult EditScore(int id)
{
Term1Score score = db.Term1Scores.FirstOrDefault(x => x.Id== id);
if(score==null)
{
return Content(" This item does not exist"); // or a view with the message
}
return View(score);
}
现在,由于您传递的是单个项目,请确保您的视图是针对该项目的强类型
@model Term1Score
<h2>@Model.Id</h2>
我有一个名为 (Term1score) 的控制器,在控制器内部我有两种不同的操作方法(Index_Test,EditScore).
现在在我的 (Index_Test) 的视图中,我有 Html action-link 将重定向到 (Edit Score)现在我想要的是它将重定向到特定的 ID(示例如果(Index_Test)SubjectId=1 然后它将转到(EditScore)SubjectID= 1,)正如你在我的控制器中看到的那样,它们都针对相同的 SubjectID,知道如何解决这个问题吗?感谢并感谢您的回复..
控制器:
public ActionResult Index_Test(int? id)
{
List<Term1Score> score = db.Term1Scores.Where(x => x.SubjectID == id).ToList();
return View(score);
}
[HttpGet]
public ActionResult EditScore(int? id)
{
List<Term1Score> score = db.Term1Scores.Where(x => x.SubjectID== id).ToList();
return View(score);
}
我试图将其放入 Index_Test 视图中。 这一个工作,但它总是只转到 Id 1-如何使这个自动更改?
@Html.ActionLink("Edit", "EditScore", "Term1Score", new { id= "1" }, null
我试了几次还是不行。
@Html.ActionLink("Edit", "EditScore", "Term1Score", new { id=@Model.id }, null)
@Html.ActionLink("Edit", "EditScore", "Term1Score", new { testId=testId.id }, null)
@Html.ActionLink("Edit", "EditScore", "Term1Score", new { id= "" }, null)
编辑:根据评论
i'm targeting one link to edit all now with the code u gave its looping one by one, and Editscore is a Multi editable table
在这种情况下,您可以获取第一项并使用它 SubjectID
@model List<Term1Score>
@{
var id = Model.FirstOrDefault() != null ? Model.First().SubjectId : (int?) null;
}
@Html.ActionLink("Edit", "EditScore", "Home", new { id = id }, null)
另一种选择是创建一个具有 2 个属性的视图模型,一个用于 Id,一个用于 Term1Score 的列表,并使用它来将数据传输到您的视图。
您的 Index_Test
操作方法正在将 Term1Score 对象列表传递给视图,因此您需要遍历它们并呈现编辑 link
EditScore
操作方法参数名称是 id
。因此,请确保在使用 Html.ActionLink 帮助程序构建锚标记时,使用 id
作为路由值对象键。
所以在你的 Index_Test.cshtml
@model List<Term1Score>
@foreach (var testId in Model)
{
<p>
@Html.ActionLink("Edit", "EditScore", "Home", new { id = testId.Id }, null)
</p>
}
此外,在 EditScore
方法中,您可能想要编辑单个记录,目前您返回的是与前一个方法相同的集合。您可能希望获得与该 ID 匹配的单个记录。
[HttpGet]
public ActionResult EditScore(int id)
{
Term1Score score = db.Term1Scores.FirstOrDefault(x => x.Id== id);
if(score==null)
{
return Content(" This item does not exist"); // or a view with the message
}
return View(score);
}
现在,由于您传递的是单个项目,请确保您的视图是针对该项目的强类型
@model Term1Score
<h2>@Model.Id</h2>