mvc重定向操作链接到具有id的特定视图

时间:2017-10-31 01:11:24

标签: c# asp.net-mvc html-helper html.actionlink

我有一个名为( Term1score )的控制器,在控制器中我有两种不同的操作方法( Index_Test,EditScore )。

现在在我的视图( Index_Test )中我有Html操作链接,它将重定向到(编辑分数)现在我想要的是它会重定向到特定ID(示例if(Index_Test)SubjectId = 1然后它将转到(EditScore)SubjectID = 1 ,)因为您可以在我的Controller中看到它们都针对相同的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视图中。 这个One Work但它总是会转到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)

1 个答案:

答案 0 :(得分:0)

编辑:根据评论

  

我的目标是使用您给出的代码来编辑一个链接   逐个循环,Editscore是一个Multi editable表

在这种情况下,您可以获取第一项并使用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对象列表传递给视图,因此您需要遍历它们并呈现编辑链接

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>