我有一个列表,其中包含模型ID和操作URL
@foreach (var dashboard in Model.dashboard)
{
<li class="drop-text clickMe" data-id="@dashboard.DashID" data-action-url="@Url.Action("GetDashboard", "Dashboard")"> @dashboard.DashName</li>
}
这里是jquery
$('body').on('click', ".clickMe", function (e) {
e.stopPropagation();
var btn = $(this);
$.ajax({
url: '<%= Url.Action("GetDashboard", "Dashboard") %>',
data: {
id: btn.data('id')
},
type: 'GET',
datatype: 'html',
success: function (data) {
$('#dash-content').html(data);
},
error: function (response) {
$('#dash-content').html('Failed');
}
})
});
这是我的行动
public ActionResult GetDashboard(int? id)
{
var dashID = id;
if (dashID == null || dashID == 0)
{
dashID = 1;
}
var getWidgetsQuery = (from widgets in db.widgets
where widgets.DashID == dashID
select widgets);
dvm.widgets = getWidgetsQuery.ToList();
return PartialView(dvm);
}
这就是jquery应该插入动作内容的地方
<div class="container-fluid" id="dash-content">
@Html.Partial("Dashboard", Model);
在按下该特定列表时,它会触发jquery代码,我已经使用了firebug来确认这一点。然而问题是jquery似乎失败了,我不确定为什么会这样。
答案 0 :(得分:1)
尝试:
$('body').on('click', ".clickMe", function (e) {
e.stopPropagation();
var btn = $(this);
$.ajax({
url: '<%= Url.Action("Get", "Dashboard") %>',
data: {
id: btn.data('id')
},
type: 'GET',
datatype: 'html',
success: function (data) {
$('#dash-content').html(data);
},
error: function (response) {
$('#dash-content').html('Failed');
}
})
});
答案 1 :(得分:1)
它不是&#34;数据类型&#34;,它&#34; dataType&#34;。也许这就是问题所在。
答案 2 :(得分:0)
您在表单上使用razor语法:
@foreach (var dashboard in Model.dashboard)
但您现在使用经典语法创建网址:
url: '<%= Url.Action("GetDashboard", "Dashboard") %>',
这被视为字符串文字,导致请求
(%3C
是<
的编码版本,后跟%=
,然后%20
是编码空间。
您应该更改ajax调用的URL以使用razor语法:
url: '@Url.Action("GetDashboard", "Dashboard")',
或者,当您在data-action-url
属性上设置位置时,您可以从那里获取该位置:
url: btn.data('action-url'),