Asp.net mvc 4 如何在单击按钮时获取表格单元格值

Asp.net mvc 4 如何在单击按钮时获取表格单元格值,asp.net-mvc-4,Asp.net Mvc 4,我创建了一个包含5列的简单表。最后一列是按钮。我需要在单击按钮时获取第一列单元格值,并将该值传递给action/controller。我希望在不使用javascript的情况下实现这一点 那么,在asp.net mvc 4中是否有现成的方法可以做到这一点,就像我在asp.net webforms中多次轻松做到的那样,下面是我的代码:- @if (Model != null) { foreach (DataRow row in Model.

我创建了一个包含5列的简单表。最后一列是按钮。我需要在单击按钮时获取第一列单元格值,并将该值传递给action/controller。我希望在不使用javascript的情况下实现这一点

那么,在asp.net mvc 4中是否有现成的方法可以做到这一点,就像我在asp.net webforms中多次轻松做到的那样,下面是我的代码:-

        @if (Model != null)
        {

            foreach (DataRow row in Model.Rows)
            {   

            <tr style="height: 22px; border-bottom: 1px solid gray">
                <td>@row["instr_no"]</td>
                <td>@row["benef_name"]</td>
                <td>@row["instr_date"]</td>
                <td>@row["maker_id"]</td>
                <td>@Html.ActionLink("Print", "Print", "Home", new { instr_no = "FirstCellValue" }) </td>

            </tr>
            }
        }

    </tbody>

@if(Model!=null)
{
foreach(Model.Rows中的数据行)
{   
@第[“仪器编号”]
@行[“benef_名称”]
@第[“安装日期”]
@行[“制造商id”]
@ActionLink(“打印”、“打印”、“主页”,新{instr_no=“FirstCellValue”})
}
}

如果不想使用javascript,可以执行表单提交

将每一行包装在表单标记中。将第一个单元格的值设置为隐藏的输入字段。当用户单击submit按钮时,它将提交该值

<table>    
    @foreach (var row in Model.Rows)
    {
        using (Html.BeginForm("Print","Home"))
        {
            <tr style="height: 22px; border-bottom: 1px solid gray">   

                <td>@row["instr_no"] <input type="hidden" value="@row["instr_no"]" 
                                                                  name="instrNo" /></td>    
                <td>@row["benef_name"]</td>
                <td><input type="submit" /></td>

            </tr>
        }
    }
</table>

可以使用以下命令将特性值添加为链接中的路由值:

@Html.ActionLink("Print", "Print", "Home", new { instr_no = row["instr_no"] }, null)

@Html.ActionLink(“Print”、“Print”、“Home”,new{instr_no=row[“instr_no”]},null)
@Shyju,感谢您的回复,请参阅Stephen Muecke先生的评论。它工作正常,您的代码也正常工作。那么你和Stephen Muecke方法的主要区别是什么?如果我们不使用(Html.BeginForm(“Print”、“Home”))就可以实现这一点。那么需要什么呢,谢谢
@Html.ActionLink()
生成一个
元素并生成一个GET-to-your方法。Shyju回答中的代码是使用表单并发布帖子(在更新数据时,您可以使用它)。基于你的链接是“打印”,我假设你的数据没有变化,所以你应该使用
ActionLink()
简单的解释,我如何标记你的答案?谢谢你的回复,请参阅Stephen Muecke先生的评论。它工作正常,您的代码也正常工作。那么你和Stephen Muecke方法的主要区别是什么?如果我们不使用(Html.BeginForm(“Print”、“Home”))就可以实现这一点。那需要什么呢,谢谢。如果您想在querystring中的instr_no的一个新链接中打开它,这将非常好。如果不想在页面url的查询字符串中显示instr_no,可以使用表单发布。该值将作为请求正文发布。如果您希望停留在同一页面,但希望在单击“发布”时下载图像,则此功能非常有用。
@Html.ActionLink("Print", "Print", "Home", new { instr_no = row["instr_no"] }, null)