2013-07-18 60 views
2

我的最終目標是在_layout中有一條<Script>行,它將從數據庫數據中生成。對我來說,第1步是簡單地在頁面的「頭部」部分顯示註釋行。我有一個測試程序,這很好。當我將代碼複製到我的網站時,我得到「路由表中沒有路由與提供的值匹配。」當我運行網絡時。錯誤指向_layout中的@ Html.Action(「OVars」,「MyO」)語句。將@ Html.Action添加到_layout錯誤中,路由表中沒有路由與提供的值匹配。

我試圖使用Glimpse和RouteDebugger,但我無法獲取有關此路線實際上正在生成的數據,以及它爲何失敗。 RouteDebugger的輸出列表中包含大約30到40個路由,其中​​只有Global.asax.cs中的「Default」路由。所以我只能假設這些路由是在代碼的其他地方創建的。

@Html.Action("OVars","MyO") 

控制器包含:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 

namespace MySite.Controllers 
{ 
    public class MyOController : Controller 
    { 
     // ChildActionOnly will not allow direct displaying of this page 
     [ChildActionOnly] 
     public ActionResult OVars() 
     { 
      return PartialView("_OVars"); 
     } 
    } 
} 

的_OVars partialview:

<!-- Test comment simply for displaying --> 

的Global.asax.cs

public static void RegisterRoutes(RouteCollection routes) 
{ 
    ViewEngines.Engines.Clear(); 
    ViewEngines.Engines.Add(new RazorViewEngine()); 

    routes.IgnoreRoute("{resource}.ico"); 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    routes.MapRoute(
     "Default", // Route name 
     "{controller}/{action}/{id}", // URL with parameters 
     new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults     
    ); 
} 

上看看會是什麼任何建議一個幫助。據我所知,有一個參數集,我不知道需要改變。

謝謝

回答

3

解決(但我不明白「地區,更多的東西學習」)。

我將行@Html.Action("OVars","MyO")更改爲@Html.Action("OVars","MyO", new { area = string.Empty })

我一直在進行代碼更改,直到收到一條錯誤消息,當我查看它時發現一些類似於「如果在您所在區域的視圖中,您也使用Html.Action幫助程序。將永遠使用該區域作爲前置,除非你明確地告訴它不要。「提供的例子是在@ Html.Action語句中添加, new { area = string.Empty }

現在,@ Html.Action工作正常,我可以繼續讓控制器訪問數據庫以獲取信息。

接下來的學習議程是「瞭解領域」。

+0

謝謝,我正在提供該區域的名稱作爲一個字符串,並敲我的桌子試圖解決它爲什麼它不工作:) – JMK

相關問題