加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 如何动态地将值从提交按钮传递给mvc?

发布时间:2020-12-16 09:13:52 所属栏目:asp.Net 来源:网络整理
导读:我从几天开始使用MVC,并且在学习MVC中的控制器和视图之间进行通信时遇到了很多问题 我有以表格形式显示员工列表的页面. 模型是Employee Model的IEnumerable类型 它有三个按钮,分别是编辑,创建,删除,详细信息. 需求: 我使用了按钮,所有都应该是HTTP Post请求
我从几天开始使用MVC,并且在学习MVC中的控制器和视图之间进行通信时遇到了很多问题

我有以表格形式显示员工列表的页面.

模型是Employee Model的IEnumerable类型

它有三个按钮,分别是编辑,创建,删除,详细信息.

需求:
我使用了按钮,所有都应该是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.
但对于编辑,删除和详细信息查看等其他操作,我需要将Employees Id传递给控制器??.但是如何使用提交按钮将Id传递给控制器??.

在获取请求类型中,我曾经像这样传递:

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

对于单个提交按钮,我曾经传递过这样的数据

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

任何人都可以告诉我我可以尝试实现这一目标的方法吗?

解决方法

您可以拥有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.所以一定要确保没有.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读