gpt4 book ai didi

使用 MVC 的 Javascript URL 会导致索引页出现问题

转载 作者:行者123 更新时间:2023-11-28 15:44:18 25 4
gpt4 key购买 nike

基本问题是这样的:

获得一个带有控件的页面,该控件调用 ajax 调用。

ajax 调用的 URL 为 var url = 'someAjaxUrl';

我在页面

mysite.com/bibble/controller/ViewFish

当使用 url 调用 ajax 时,它将使用此方法:

mysite.com/bibble/controller/someAjaxUrl

这太棒了。但是,如果我决定将 ViewFish 页面设为 Controller 的索引,则 url 将变为:

mysite.com/bibble/controller

这会破坏 ajax,因为 ajax 现在转到

mysite.com/bibble/someAjaxUrl

是否有一个简单的解决方案可以确保 JavaScript 始终有效?

如果您手动输入

mysite.com/bibble/controller/Index

它有效。但 URL 是通过 ActionLink() 生成的,它会自动为您省略 /Index

欢迎提出想法

最佳答案

Thoughts welcome

不要硬编码网址:

var url = 'someAjaxUrl';

改用内置的 url 帮助器:

<script type="text/javascript">
var url = '@Url.Action("someAction", "someController")';
</script>

或者,如果您不显眼地 AJAX 化某些 DOM 元素(例如 anchor 或表单),您可以简单地使用其 href 或 action 属性。

例如:

@Html.ActionLink("click me", "someAction", "someController", null, new { id = "myAnchor" })

然后在单独的 javascript 中:

$('#myAnchor').click(function() {
$.ajax({
url: this.href,
type: 'GET',
success: function(result) {

}
});
return false;
});

这样您甚至不需要 url 变量。您已经将它作为 DOM 的一部分了。

这也适用于 div 或其他元素:

<div id="myDiv" data-url="@Url.Action("someAction", "someController")">
Click me
</div>

然后:

$('#mydiv').click(function() {
$.ajax({
url: $(this).data('url'),
type: 'GET',
success: function(result) {

}
});
});

关于使用 MVC 的 Javascript URL 会导致索引页出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22865296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com