我目前正在显示一个名为Workout table的表中的信息,但我想要做的是将WorkoutId从另一个表中取出userId并将它们保存在一个名为UserCompletedWorkouts的表中。
这是我已经拥有的:
查看
@model IEnumerable<SportsCoach.Models.WorkoutModel>
@{
ViewBag.Title = "Workout";
ViewBag.PageName = "View workout";
}
<section id="MainContent" class="container">
<h2>Workouts</h2>
<p>This page can be used to add, edit, view and delete workouts. </p>
<table class="table table-striped">
<tr>
<th>Day</th>
<th>
@Html.DisplayNameFor(model => model.WorkoutDetails)
</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
<b>@Html.Raw(item.Day)</b>
</td>
<td>
@Html.Raw(item.WorkoutDetails).Replace("\n", "<br />")<br />
@Html.ActionLink("Confirm workout", "Create", null, new { @class = "btn btn-primary col-xs-12 col-sm-3 col-lg-3" })
</td>
</tr>
}
</table>
答案 0 :(得分:2)
任何涉及插入或编辑数据的内容都应保留在控制器中。 View的目的是简单地显示所有幕后逻辑的结果。
假设您在该视图中拥有模型中的WorkoutID,则需要创建另一个名为SaveCompletedWorkout
的函数
在您发布的视图中,您需要在循环内为其创建链接。例如:
@Html.ActionLink("Controller","CompleteWorkout",new { WorkoutId = item.WorkoutId })
至于保存项目的功能:
public ActionResult CompleteWorkout(int workoutId)
{
//Do checking to make sure workoutid is valid
//Database.UserCompletedWorkouts.Add(new UserCompletedWorkout() { UserId = User.Id, WorkoutID = workoutID });
//Return a view of whatever now
return View();
}
编辑:此外,无需编码和使用Raw,只需使用
即可<td>@item.WorkoutDetails @Html.ActionLink(...)</td>