2016-09-23 70 views
1

我开始几天MVC工作,有一个问题出学习的途径很多在MVC如何动态地将提交按钮的值传递给mvc?

我有以表格形式显示员工列表页控制器和视图之间进行通信的。

模型是Employee Model

IEnumerable类型的,具有三个按钮它们EditCreateDeleteDetails

要求:
我使用的按钮,使所有应HTTP POST请求类型的,因为我不希望用户使用的URL请求直接访问它们。

这里是我的视图代码:

@using (Html.BeginForm()) 
{ 
    <p> 
     <input type="submit" name="CreateView" value="Create New(Post)" formaction="CreateView" formmethod="post" /> 
    </p> 
    <table class="table"> 
     <tr> 
      -------Headings of table------- 
     </tr> 
     @foreach (var item in Model) 
     { 
     <tr> 
      <td>@Html.DisplayFor(modelItem => item.EmployeeName)</td> 
      <td>@Html.DisplayFor(modelItem => item.EmployeeGender)</td> 
      <td>@Html.DisplayFor(modelItem => item.EmployeeCity)</td> 
      <td>@Html.DisplayFor(modelItem => item.DepartmentId)</td> 
      <td>@Html.DisplayFor(modelItem => item.EmployeeDateOfBirth)</td> 
      <td> 
       <input type="submit" name="EditView" value="Edit(Post)" formaction="Edit" formmethod="post" /> | 
       <input type="submit" name="DetailsView" value="Details(Post)" formaction="Details" formmethod="post" /> | 
       <input type="submit" value="Delete(Post)" onclick="return confirm('Are you sure you want to delete record with EmployeeId = @item.EmployeeId')" /> 
      </td> 
     </tr> 
     } 
    </table> 
} 

这里删除按钮作品,因为我并不需要的员工的ID。 但对于编辑,删除和详细信息查看等其他操作,我需要将员工ID传递给控制器​​。但是,如何使用提交按钮将ID传递给控制器​​。

在GET请求类型我用来传递这样的:

@Html.ActionLink("Details", "Details", new { id = item.EmployeeId }) 

对于单提交按钮,我用来传递这样

@using (Html.BeginForm("Details", "BusinessLayer", FormMethod.Post, new { id = item.EmployeeId })) 

数据中的任何一个可以告诉我的方法,我可以休耕来实现这一目标?

+0

单个表单内的多次提交可能是一个坏主意。你可以使用按钮,而在JavaScript的帮助下,你可以提交它。 –

+0

@PrashantMohite,OP想重定向,所以Ajax不会工作。 –

+0

只需为集合中的每个操作和每个项目创建一个表单 - “@ Html.BeginForm(”Edit“,”yourControllerName,new {id = item.EmployeeId})){}'等 –

回答

6

您可以有3个单独的窗体标签,每个按钮一个。只要确保你在表单中有一个你想传递的数据的输入字段。例如,如果您的操作方法使用名为EmployeeId的参数接受EmployeeId,则应该在输入隐藏字段中使用表单中的相同内容。

@model IEnumerable<Employee> 
<table> 
@foreach(var item in Model) 
{ 
    <tr> 
     <td>@item.EmployeeName</td> 
     <td>@item.EmployeeGender</td> 
     <td>@item.EmployeeCity</td> 
     <td>@item.EmployeeDateOfBirth</td> 
     <td> 
     @using(Html.BeginForm("Details","YourControllerName")) 
     { 
      <input type="hidden" name="EmployeeId" value="@item.EmployeeId" /> 
      <input type="submit" value="Details" /> 
     } 
     @using(Html.BeginForm("Edit","YourControllerName")) 
     { 
      <input type="hidden" name="EmployeeId" value="@item.EmployeeId" /> 
      <input type="submit" value="Edit" /> 
     } 
     @using(Html.BeginForm("Delete","YourControllerName")) 
     { 
      <input type="hidden" name="EmployeeId" value="@item.EmployeeId" /> 
      <input type="submit" value="Delete" /> 
     } 
     </td> 
    </tr> 

} 

还记得,嵌套窗体是无效的HTML。所以请确保你没有这些。

+0

这是一个工程我。有人说在单一表单中使用多个提交是不好主意?它是否有效?如果有的话,任何机构都可以解释? –