我有一项功能允许用户根据自己的状态代码过滤记录。在菜单中,我有一个自定义过滤器部分:
<h3>Custom Filters</h3>
<br />
<ul id="ui-ajax-tabs">
@{ Html.RenderAction("GetGroups", "Manage");}
</ul>
我的部分观点如下:
@model IEnumerable<AllEngage.Model.Group>
@using AllEngage.Web.Helpers
@foreach (var group in Model)
{
<li>
<label for="@group.GroupName">@group.GroupName</label>
@Html.DropDownList("GroupItems", group.GroupItems.ToSelectListItems())
</li>
}
当从下拉列表中选择一个项目时,我想在我的控制器中触发一个动作方法:
[HttpGet]
public ActionResult Index(int page = 1, int groupFilterId = -1)
最好的方法是什么?使用json开火还是以某种方式回复帖子?
答案 0 :(得分:8)
你需要把你的param传递给行动。执行此操作的方法 - 通过查询字符串传递与操作中的param相同的名称:
http://mysite/GetGroups?groupFilterId=2
要刷新它,您需要发送带有param whitch的ajax请求将被触发下拉控件onchange
。为过滤器控件指定一些ID:
@Html.DropDownList("GroupItems", group.GroupItems.ToSelectListItems(), new {@id="ddlFilter"})
然后使用jQuery发出数据的GET请求:
$('#ddlFilter').change(function() {
var queryLink = '@Url.Action("GetGroups")';
if ($(this).val() != '') {
queryLink += '?groupFilterId=2';
}
$.get(queryLink, function(data) {
$('#ui-ajax-tabs').html(data);
});
});
答案 1 :(得分:1)
您需要在下拉列表事件中使用jquery触发ajax调用。 如果值更改,则首先关闭下拉列表事件,然后调用jquery ajax调用 我正在粘贴jquery的代码。
$.get("/Wk/Revision/@hTitle/@pageID/?langID=2", function (data) {
$("div#dAjaxContent").html(data);
$("div#dShow").css("visibility", "visible");
$("#dShow").dialog();
});
//这是用于ajax调用。下拉检查自己做。 “/周/修正/ @ hTitle / @的pageID /?LANGID = 2” 这将调用控制器方法修订版。 接下来我想你会做的。
答案 2 :(得分:0)
我建议做一个帖子请求;你可以用这个构建一个:
http://iridescence.no/post/Invoking-ASPNET-MVC-Actions-from-JavaScript-using-jQuery.aspx
您可以发出AJAX get请求,或者如果您想重定向,可以将JavaScript的window.location更改为指向您想要的操作,如:
window.location = "/MyController/Index";