AJAX调用MVC中的OnChange事件

我必须在下拉列表的onchange事件上进行AJAX调用,该下拉列表是视图的一部分。 在更改事件上,我需要调用数据库,执行一些计算显示UI,然后使用计算来填充图表控件。 UI显示按此顺序显示。 图表下拉类别列表具有评分分数的子类别列表因此,您可以在更改事件中显示div3中的类别评级,使用评级分数填充图表。 在.NET中轻松完成但是如何在MVC中完成? 我能想到的唯一选择是使用代码隐藏创建用户控件,但这违背了使用MVC的目的。 任何帮助表示赞赏。

以下是您如何实现这一点的一般概念。

  
<%= Html.RenderPartial("MyPartialView", Model) %>

这是您的控制器操作方法。

 [HttpPost] public PartialViewResult GetPartialGraph(int id /* drop down value */) { // do calculations whatever you need to do // instantiate Model object var model = myBusinessLogicService.DoCalculations(id); return PartialView("MyPartialView", model); } 

我想这就是你要找的答案。

好的,如果你想要的是一种方法来在下拉列表更改时调用onchange事件,这可能会有所帮助:

 @Html.DropDownListFor( model => model.SelectedId, new SelectList(ViewBag.Ids, "Id", "Name"), "[All]", new { onchange = "onChangeId();", @id ="municipalityDropDown" } ) 

那么你可以拥有这个javascript代码和你ajax代码。 这是一个调用动作方法的jax代码示例。

 function onChangeId() { jQuery.ajax({ url: '@Url.Action("Action Method Name", "Controller Name")', type: 'POST', contentType: 'application/json', data: JSON.stringify({ data: data2 }), success: function (result) { } }); } 

考虑使用局部视图。 如果你谷歌ASP.Net MVC部分视图有很多链接,但这里有一个我发现intestering

http://blog.stevensanderson.com/2008/10/14/partial-requests-in-aspnet-mvc/

我不确定我是否完全理解你要做的事情,但在MVC中我可能会处理它的方式是将几个AJAX调用链接在一起。 第一个根据选择更新类别评级。 这可能会返回JSON,以便您可以轻松提取评分。 第二个获取第一个返回的评级分数,并调用将图表呈现为HTML的操作 – 即,它呈现返回的部分视图并插入到文档中的适当位置。

是的,这是对的 – 只有改变正在取代:

 onchange = “this.form.submit();” 

有:

 onchange = “$(this.form).submit();” 

在这篇文章中找到了它