我的asp.net mvc 4.0 Web应用程序中有以下代码。这个视图是一个搜索视图,它有搜索字段,还有一个Ajax.BeginForm来调用搜索操作方法: -
@using (Ajax.BeginForm("AdvanceSearchIndex", "Home",
new AjaxOptions
{
HttpMethod = "get",
InsertionMode = InsertionMode.Replace,
LoadingElementId = "progress",
UpdateTargetId = "SearchTable"
}))
{
<div>
<span class="f">@Html.DisplayNameFor(model => model.ip) </span>
@Html.EditorFor(model => model.ip) @Html.DropDownListFor(a => a.ipselection, Model.NameSelectionOptions)
@Html.ValidationMessageFor(model => model.ip)
</div>
<div>
<span class="f">@Html.DisplayNameFor(model => model.mac) </span>
@Html.EditorFor(model => model.mac) @Html.DropDownListFor(a => a.macselection, Model.NameSelectionOptions)
@Html.ValidationMessageFor(model => model.mac)
</div>
<div>
<span class="f">@Html.DisplayNameFor(model => model.AssetTypeID) </span>
@Html.DropDownListFor(model => model.AssetTypeID, ((IEnumerable<TMS.Models.TechnologyType>)ViewBag.Techtypes).Select(option => new SelectListItem
{
Text = (option == null ? "None" : option.Name),
Value = option.AssetTypeID.ToString(),
Selected = (Model != null) && (option.AssetTypeID == (int)ViewBag.AssetTypeID)
}), "All",new { @class = "SmallDropDown5" })
@Html.ValidationMessageFor(model => model.AssetTypeID)
</div>
<input class="btn btn-success" type="submit" value="Search" /> <span> </span>
<input type="reset" value="Reset" class='btn' />
<img src="~/Content/Ajax-loader-bar.gif" class="loadingimage" id="progress" />
}
现在我想添加一个名为&#34的按钮;导出到CSV&#34;在&#34;搜索&#34;旁边按钮,用户可以单击“导出”按钮,这将调用另一个将执行导出操作的操作方法。因此在导出操作方法中我将需要传递相同的搜索参数,因此导出数据将仅用于相关记录。所以我试图将“导出”按钮定义为父级,将搜索定义为内部按钮。因此,当用户点击导出时,他们将实际重新提交搜索字段,这是我更新的代码: -
@using (Ajax.BeginForm("Export", "Home",
new AjaxOptions
{
HttpMethod = "get",
InsertionMode = InsertionMode.Replace,
LoadingElementId = "progress",
UpdateTargetId = "SearchTable"
}))
{
using (Ajax.BeginForm("AdvanceSearchIndex", "Home",
new AjaxOptions
{
HttpMethod = "get",
InsertionMode = InsertionMode.Replace,
LoadingElementId = "progress",
UpdateTargetId = "SearchTable"
}))
{
//code goes here
<input class="btn btn-success" type="submit" value="Search" />
<input type="reset" value="Reset" class='btn' />
<img src="~/Content/Ajax-loader-bar.gif" class="loadingimage" id="progress" />
}
<input class="btn btn-success" type="submit" value="Export" />
}
但是当我点击导出按钮时,什么都不会发生......当我点击搜索导出时,会调用actin方法..所以有没有办法嵌套Ajax.Beginform ??
答案 0 :(得分:0)
HTML 5中不允许使用嵌套表单(请参阅https://stackoverflow.com/a/26536925/3111689)。
我建议您为过滤器添加某种ID(例如id =&#34; filter_ip&#34;),然后在按钮上运行以下JavaScript:
window.location = '/Export?ip=document.getElementById("filter_ip")&mac=...';
如果有更多参数的长度超过了获取请求的限制,您可以通过JavaScript / Ajax发布帖子。