我正在使用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>
}
当我按下这些按钮时,我想转到操作方法,其中包含用户在输入字段中填写的值。
答案 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>