[英]MVC : The view found at '~/…/Index.cshtml' was not created
[英]Ajax call fails when called from MVC Razor view other than Index.cshtml
我對為什么從索引視圖中調用我的Ajax調用成功而從具有不同名稱的視圖中調用卻失敗的原因感到困惑。 我有一個ASP .NET MVC 4項目,該項目還涉及通過Javascript進行的一些Ajax請求。 我在此頁面上的Javascript / JQuery代碼非常復雜,以至於我已將它們編寫在單獨的Javascript文件中。 這是我發出Ajax請求的Javascript文件之一的簡化摘錄:
//to be called in the JQuery page load function
function initialize(){
$.ajax({ url: MyController/GetData, async: false })
.done(function(returnedData) {
doStuff(returnedData);
});
}
在我的Home控制器中,我創建了一個默認名稱為Index.cshtml
的新View。 在此視圖中,我引用了包含上述功能的外部Javascript文件。 當我打開/Home
頁面時(因為我具有默認的路由設置,所以它是Home/Index
),將調用initialize()
函數,並且Ajax調用將按預期成功 。
我創建了另一個名為Details.cshtml
視圖,並且在此頁面中,我還引用了相同的Javascript文件。 當我打開/Home/Details
頁面時,將調用initialize()
函數,而Ajax調用將失敗 。 錯誤消息說它正在尋找/Home/Details/MyController/GetData
,它肯定不存在。
奇怪的是,同一呼叫只能在一個頁面上工作,而不能在另一頁面上工作。 我的問題:
另外,請注意,我已經閱讀了一些有關從MVC Razor視圖調用Ajax的問題,它們通常建議您使用Url.Action(...)
創建URL。 問題是在這種情況下,這對我來說不是一個選擇,因為我真的想將我的Javascript與我的Razor View分開。 另外,如果這是一個障礙,那么為什么從“索引”頁面調用它時仍然有效?
謝謝您幫忙。
更新:這是RouteConfig文件:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("favicon.ico");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults:new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
注意:當我在Home/Index
或Home/Details
上時,不會僅發生此行為。 我注意到Ajax調用可以從AnyController/Index
頁面正常工作,但是從AnyController/AnyOtherPage
調用時失敗。
這取決於您的路由,但是請嘗試以下操作(在MyController前面加一個斜杠):
function initialize(){
$.ajax({ url: /MyController/GetData, async: false })
.done(function(returnedData) {
doStuff(returnedData);
});
}
它還可以幫助指定它是get還是post,以及您希望其發送為的數據類型。 Mvc與Json很好:
function initialize(){
$.ajax({ url: /MyController/GetData, async: false, dataType:"json", type:"Get" })
.done(function(returnedData) {
doStuff(returnedData);
});
}
它在索引頁面上起作用的原因可能是因為詳細信息必須顯示在url中,但索引沒有顯示。 因此,如果您的索引URL是Home / Index,則Home /仍然有效。 有關詳細信息,它必須顯示為“主頁/詳細信息”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.