【发布时间】:2015-07-31 05:27:29
【问题描述】:
我知道这是一个常见问题,对于类似的要求已经回答了很多次,但我在我的场景中找不到解决方法。
我正在使用 DevExpress MVC 组件。有一个类似如下的树视图:
@Html.DevExpress().TreeView(settings =>
{
settings.Name = "NavigationClientsList";
settings.AllowSelectNode = true;
Model.ForEach(_client =>
{
settings.Nodes.Add(node =>
{
node.Name = String.Format("{0}_client_{1}", settings.Name, _client.ClientID);
node.Text = _client.ClientName;
});
});
settings.ClientSideEvents.NodeClick = "OnTreeViewNodeClick";
settings.PreRender = (source, e) =>
{
ASPxTreeView treeView = (ASPxTreeView)source;
treeView.ExpandAll();
};
}).GetHtml()
还有我的 NodeClick 事件:
function OnTreeViewNodeClick(s, e) {
if (e.node.name.indexOf("_client_") > -1) {
var tmpDivDescription = e.node.name.split("_");
if (tmpDivDescription.length = 3) {
var tmpID = tmpDivDescription[2];
//alert(tmpID);
//$("#testDisplay").text("ALGO");
$.ajax({
url: 'Home/Client/',//'@Url.Action("Client", "Home")',//'Home/Client/25',//'@Url.Action("Client", "Home")',
data: { 'id': tmpID },
dataType: "html",
success: function (result) {
//alert('OK!')
$("#DataDisplay").html(result);
},
error: function (xhr) { alert('ERROR!' + xhr.responseText) }
});
}
} else {
}
}
我尝试了几种两种方式来执行 Ajax 调用
url: 'Home/Client/' 和 url: '@Url.Action("Client", "Home")'
第一个按预期工作,但是当尝试将第二个与 UrlAction 一起使用时,服务器抱怨找不到资源:
Beschreibung:HTTP 404。Die gesuchte Ressource oder eine ihrer Abhängigkeiten wurde möglicherweise entfernt, umbenannt oder ist vorübergehend nicht verfügbar。 Überprüfen Sie folgende URL, und stellen Sie sicher, dass sie richtig geschrieben wurde。
Angeforderter URL:/@Url.Action("Client", "Home")
如您所见,请求的 URL 添加了一个“/”。我不知道这是否是我的问题的原因。
对于我找到的所有主题和资源,它们都使用“正常”的 Url.Action 格式。
有什么想法吗?
【问题讨论】:
-
你在使用区域吗?
-
我在 Application_Start 方法中有这个
AreaRegistration.RegisterAllAreas();,但我没有定义任何特别的东西。我保留了模板中的 Default RegisterRoutes。 -
您的 NodeClick 事件是否在外部文件中?如果是这样,剃刀语法将不可用
-
是的,我的 OnTreeViewNodeClick 位于我从视图链接的单独 js 文件中。应该是cshtml视图中的JavaScript函数吗?
-
如果您使用区域,您可能需要指定区域名称 - 例如
'@Url.Action("Client", "Home", new { area = "" })'或'@Url.Action("Client", "Home", new { area = "yourArea" })'
标签: javascript ajax asp.net-mvc-5 devexpress