我在asp.net mvc上有一些应用程序.我正在尝试创建表过滤器.页面非常难,所以我无法从JSON响应中获取数据.我试图通过使用params的调用动作来获取它.
function refresh() {
var id = $("#list").val();
var params = { id: id };
$.get("/Home/Index", params, null, "json");
}
<select id="list" onchange="refresh()">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
<%foreach (var i in (IEnumerable<int>)ViewData["list"])
{ %>
<%=i %><br />
<%} %>
public ActionResult Index(int? id)
{
if (id == null)
id = 0;
ViewData["list"] = Enumerable.Range((int)id, 5).Select(i => i).ToList<int>();
return View();
}
Run Code Online (Sandbox Code Playgroud)
但我没有看到新的数据.怎么了?我如何刷新页面?
PS我认为我想从动作A(动作A)到动作A(带有参数)去(重定向).我不想在客户端重建页面
您没有对通过get调用检索的结果执行任何操作.此外,由于您要返回视图,因此应将数据类型设置为html.
$.get('/Home/Index', params, function(html) {
$('body').html(html);
},'html');
Run Code Online (Sandbox Code Playgroud)
我注意到我可能只会替换更新的部分.您可以通过使用部分视图来保存该部分,然后当您通过AJAX获取请求时,您只能返回部分视图而不是完整视图.我要做的另一件事是将视图强类型化IEnumerable<int>并传递模型,而不是使用视图数据.
视图
<script type="text/javascript">
$(function() {
$('#list').change( function() {
var id = $("#list").val();
var params = { id: id };
$.get("/Home/Index", params, function(html) {
$('#listResults').replaceWith(html)
}, "html");
});
});
</script>
<select id="list">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
<% Html.RenderPartial( "ListResults" ); %>
Run Code Online (Sandbox Code Playgroud)
局部视图
<div id="listResults">
<%foreach (var i in Model)
{ %>
<%=i %><br />
<%} %>
</div>
Run Code Online (Sandbox Code Playgroud)
行动
public ActionResult Index(int? id)
{
if (id == null)
id = 0;
var model = Enumerable.Range((int)id, 5).Select(i => i).ToList<int>();
if (this.Request.IsAjaxRequest())
{
return PartialView(model);
}
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3734 次 |
| 最近记录: |