有没有办法通过按钮发送参数?

时间:2012-06-04 12:39:49

标签: asp.net asp.net-mvc

我有一个链接女巫我想要你改成一个按钮,链接通过一个参数,看起来如下:

@Html.ActionLink("View", "Print", new { id = item.SalesContractId })

我现在想用一个带有此参数的按钮替换它 {id = item.SalesContractId}

我的按钮如下所示:

<input type="button" value="Print" id="btnFromIndexPrint" />

有人能告诉我怎么做这个吗?

这是我的网页看起来如此,所以你可以看到我想要实现的目标:

@model IEnumerable<Contract.Models.tbSalesContract>


<!DOCTYPE html>

<html>
<head>
    <title>Index</title>
</head>
<body>
    <p>
        @Html.ActionLink("Create New", "Edit")
    </p>
    <table>
        <tr>            
            <th>
                Company
            </th>
            <th>
                Trading As
            </th> 
            <th>
                Created
            </th>           
            <th>
                Updated
            </th>
            <th></th>
        </tr>

    @foreach (var item in Model) {
        <tr>                     
            <td>
                @Html.DisplayFor(modelItem => item.CompanyName)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.TradingAs)
            </td> 
            <td>
                @Html.DisplayFor(modelItem => item.C_date)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.C_updateDate)
            </td>
            <td>
               @* @Html.ActionLink("View", "Edit", new { id = item.SalesContractId }) *@
                <input type="button" value="View" id="btnFromIndexView" />

            <td>
            @* Add Button to print only if contract state is finalized *@
            @if (item.IsFinal) 
            {
                @Html.ActionLink("Print", "Print", new { id = item.SalesContractId })
                <input type="button" value="Print" id="btnFromIndexPrint" />

            }
            </td>
            </td>
        </tr>
    }

    </table>
</body>
</html>

2 个答案:

答案 0 :(得分:2)

如果您查看ActionLink生成的源代码,您会发现这只是一个常规超链接。 id参数将附加到您的网址。

因此,用按钮替换超链接将不一样。

在ASP.NET MVC中,数据可以通过多种方式发送到您的服务器。 ActionLink使用的是将数据附加到URL。 Routing机制将把它们映射到Action方法的特定属性。

发送数据的另一种方法是使用HTML表单。表单可以有一个提交按钮,然后将表单数据发送到您的服务器。

ASP.NET MVC将在搜索操作方法的可能值时检查以下来源:

  1. 以前绑定的动作参数,当动作是孩子时 行动
  2. 表单字段(Request.Form)
  3. JSON请求体(Request.InputStream)中的属性值,但仅当请求是AJAX请求时
  4. 路由数据(RouteData.Values)
  5. 查询字符串参数(Request.QueryString)
  6. 已发布文件(Request.Files)

答案 1 :(得分:1)

为什么要使用按钮而不是链接?如果您担心外观,那么您可以应用一些CSS并使链接看起来像按钮。

超链接(&lt; a&gt;)是为在网页之间形成连接而创建的链接。我建议你在你的情况下使用超链接而不是按钮。如果你想使用javascript做一些客户端操作,那么按钮(提交除外)是好的。

如果你仍然想使用按钮,那么你必须依靠一些javascript来调用控制器动作。