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>