ASP.NET MVC 3.0 WebGrid
我遇到以下问题:“需要JQuery脚本引用才能在”WebGrid“助手中启用Ajax支持”
我想让我的WebGrid AJAX启用。 我得到了部分视图的代码
@ModelType WebGrid
@Model.GetHtml(tableStyle:="webgrid", headerStyle:="webgrid-header", footerStyle:="webgrid-footer", alternatingRowStyle:="webgrid-alternating-row", selectedRowStyle:="webgrid-selected-row", rowStyle:="webgrid-row-style",
columns:=Model.Columns(Model.Column(
columnName:=GemeentePostColumnsEnum.NISCode.ToString()),
Model.Column(columnName:=GemeentePostColumnsEnum.GemeenteNaam.ToString()),
Model.Column(columnName:=GemeentePostColumnsEnum.DistrictNaam.ToString()),
Model.Column(columnName:=GemeentePostColumnsEnum.PostCode.ToString()),
Model.Column(columnName:=GemeentePostColumnsEnum.PostNaam.ToString()),
Model.Column(
format:=@@<text>@Ajax.ActionLink("Edit", "AddEdit", New With {.NISCode = item.NISCode}, New AjaxOptions With {.UpdateTargetId = "formGemeentePost", .InsertionMode = InsertionMode.Replace, .HttpMethod = "GET", .OnFailure = "failure"})</text>)))
这个控制器的代码:
Function SearchForm(searchModel As GemeentePostWebService.GemeentePostCriteria) As PartialViewResult
searchModel.Taalcode = "nl"
'Code to fill up Model
ViewBag.WebGrid = CreateGrid(viewModelList)
Return PartialView("Partial/_Grid", ViewBag.WebGrid)
End If
End Function
Private Function CreateGrid(source As List(Of GemeentePostModel)) As WebGrid
Return New WebGrid(source:=source, rowsPerPage:=10, ajaxUpdateContainerId:="grid", defaultSort:=GemeentePostColumnsEnum.GemeenteNaam)
End Function
当我输入一些搜索值并提交表单时,出现以下错误:
“需要JQuery脚本引用才能在”WebGrid“助手中启用Ajax支持”
结果如下:我得到了正确的过滤值,但我的div(updatetargetid)没有填满。
我已经添加了jQuery和不显眼的脚本,并将它们包含在我的标题中:
<!DOCTYPE html>
<html>
<head>
<title>X</title>
<link href="/X/Content/Site.css" rel="stylesheet" type="text/css" />
<link href="/X/Content/themes/base/jquery.ui.all.css" rel="stylesheet" type="text/css" />
<script src="/X/Scripts/jquery-1.5.1.min.js" type="text/javascript"></script>
<script src="/X/Scripts/jquery-ui-1.8.11.js" type="text/javascript"></script>
<script src="/X/Scripts/jquery.unobtrusive-ajax.min.js" type="text/javascript"></script>
</head>
您可能面临的问题是您的网页上引用了“jquery.unobtrusive-ajax.min.js”文件。
如果您使用YSlow或PageSpeed,其中一个建议是将css放在头部,将javascript放在最下面。
这导致你看到发生的事情(刚刚发生在我身上)。
如果您的引用位于底部,则在页面的第一次加载(或刷新)时,javascipt文件在WebGrid帮助程序尝试开始执行此操作之前尚未加载,并且您将看到有关丢失的弹出消息参考。 如果你忽略它,那么分页或排序实际上是有效的,并且消息消失......直到你再次刷新页面。
您可以将脚本引用移动到顶部,也可以编写document.ready脚本来延迟处理。
你在哪里添加了对jquery的引用,因为如果它打破了if (typeof(jQuery)=='undefined')
那么它绝对不会在该页面上找到jquery。
你有没有看看你的源代码客户端,以确保jquery引用在那里,并且在引用jquery库之后使用/引用webgrid脚本/ javascript。
应该
Return New WebGrid(source:=source,.....
读
Return New WebGrid(source: source,.....
即放下“=”? (对不起,自从我使用VB以来已经很久了)
另外,你是否看到url地址中的局部视图的控制器动作名称和参数? 这可能与如何将表单发布回服务器有关,我尝试使用JavaScript以编程方式发布表单数据而不是用户按下提交按钮时发生了同样的错误。 我需要我的网格相应地填充页面刷新,菜单选择和下拉选择事件,并且难以使其工作。 当我收到错误信息时,我收到的是部分页面填写完webgrid,但没有其他页面。
尽管我从来没有解决过这个问题,但我确实设法解决了这个问题。 我的解决方案涉及到:
编辑视图到这
@model MyProject.Models.GridResultsModel
...
<div id="updatetarget">
@Html.Partial("_GridResults", Model)
</div>
<script type="text/javascript">
$(document).ready(function () {
$('#updatetarget').load("_GridResults")
});
</script>
我的灵感来自于这篇文章:在MVC 3中使用Webgrid的多重复选框选择(全选/取消全选),排序和分页
希望这可以帮助
链接地址: http://www.djcxy.com/p/62763.html