无法使用剃须刀按下按钮来插入数据

时间:2014-04-26 19:55:44

标签: c# asp.net-mvc visual-studio

我目前正在显示一个名为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>

1 个答案:

答案 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>