如何通过单击不同的按钮重定向到不同的动作方法

时间:2016-09-22 08:45:38

标签: asp.net-mvc-5

我正在使用MVC在这个网站上工作,我想为我的用户提供两个按钮,将用户重定向到同一个控制器上的两个不同的操作方法 这是我在视图上的代码

    @using (Html.BeginForm())
    {
        <div class="box-body">
            <div class="row">
                <div class="form-group">

                    <div class="input-group col-md-3 col-md-push-3">
                       @Html.DropDownList("HotelName", ViewBag.HotelName as SelectList, htmlAttributes: new { @class = "form-control" })
                        @Html.ValidationMessageFor(model => model.HotelAvailability.Hotel.HotelName, "", new { @class = "text-danger" })
                    </div>
                </div>
            </div>
            <div class="row">
                <div class="col-md-12">
                    <div class="input-group col-md-3 col-md-push-3 ">
                        <input type="text" name="BookingDate"  class="form-control input-sm" placeholder="Enter Booking Date in dd/MM/yyyy format">
                    </div>
                </div>
            </div>

            <div class="box-footer">
                <div class="col-md-3 col-md-push-3">

                    <button type="submit" value="Submit" class="btn btn-block btn-success" @Url.Action("ReportPdf", "Books")>  Preview Report</button>
                    <button type="submit" value="Submit" class="btn btn-block btn-success" @Url.Action("GeneratePDF", "Books")>  Export to PDF</button>

                </div>

            </div>


        </div>
    }

当我按下这些按钮时,我想转到操作方法,其中包含用户在输入字段中填写的值。

2 个答案:

答案 0 :(得分:0)

将Url.Action放在按钮上无效。你甚至还没把它放在一个属性中,所以它毫无意义。它是表单标记的操作属性,用于控制其发布到的位置。你可以

a)添加一个隐藏字段,并使用javascript来填充隐藏字段的值,这些字段在服务器端回发时对服务器端有意义,具体取决于按下的按钮(或者可能有一个按钮,但有一个单选按钮字段,以便用户可以选择是否要预览或导出)。然后,服务器将决定是重定向到预览还是导出操作并返回相应的数据。

b)将按钮更改为客户端按钮(而不是&#34;提交&#34;按钮)。将所需的URL正确放入每个按钮的属性中。在javascript中处理按钮点击事件,从按钮的属性中获取URL,将其设置为&#34; action&#34;表单的属性,然后使用javascript提交表单,然后将其提交给正确的操作。

答案 1 :(得分:0)

您可以使用formaction属性HTML5

示例

<button type="submit" formaction="Controller/action">ReportPdf</button>
<button type="submit" formaction="Controller/action">GeneratePDF</button>

在你的情况下

<button type="submit" formaction="ReportPdf">ReportPdf</button>
<button type="submit" formaction="GeneratePDF">GeneratePDF</button>