2015-04-02 22 views
0

我的應用程序有一定數量的普通網頁。是否有下面的一條捷徑:任何整潔的Html頁面的方式嗎?

public ActionResult page1() 
{ return View(); } 
public ActionResult page2() 
{ return View(); } 
public ActionResult page3() 
{ return View(); } 
public ActionResult page4() 
{ return View(); } 
public ActionResult page5() 
{ return View(); } 
//.... 
public ActionResult page48() 
{ return View(); } 
+1

更多信息我會設置它們以視圖名作爲參數的部分景色。 – asawyer 2015-04-02 15:01:30

+0

你的意思是在URL中有另一個'/'嗎? – 2015-04-02 15:22:14

+0

這些頁面是否需要Razor或MVC運行時處理? – mxmissile 2015-04-02 15:22:43

回答

1

你可能想看看HandleUnknownAction

當請求此控制器匹配調用,但與指定的動作名稱的方法是在控制中。

所以,你可以爲你的頁面的控制器,它只是處理HandleUnknownAction方法,如果它存在

namespace TEST.Controllers 
{ 
    [HandleError] 
    public class PagesController : Controller 
    { 

     protected override void HandleUnknownAction(string actionName) 
     { 
       this.View(actionName).ExecuteResult(this.ControllerContext); 
      } 
     } 
} 

所以,如果你有意見page1.cshtmlpage2.cshtmlpage3.cshtml等控制器命名的頁面將返回視圖你可以打電話給他們pages/page1沒有填充控制器重複代碼

在實際的觀點,然後你只是添加

@{ 
    Layout = "layoutpath"; 
} 

因爲當你默認創建的視圖,這將是空

More info here

+0

我不知道這個,整齊。 – asawyer 2015-04-02 16:22:00

+0

正是我在找的!按廣告方式工作。 – 2015-04-03 11:23:39

+0

@gerdi相關但單獨的問題:有沒有辦法將模型傳遞給ExecuteResult?如果沒有找到視圖,我想調用this.View(「error」)。ExecuteResult ...並傳遞一個HandleErrorInfo對象。 – 2015-04-03 14:59:26

1

既然你只是由於包含佈局文件返回一些HTML和只使用剃刀語法,我會建議使用WebPages。這些基本上是剃鬚刀cshtml動態文件,將無需通過控制器/操作進行處理。

要開始,請確認WebPages已在web.config中打開(如果尚未打開),請查找以下行:<add key="webpages:Enabled" value="true" />。接下來,簡單地將這些.cshtml文件視爲獨立文件(不需要控制器/操作)。您可以將所有這些移動到某個根文件夾並從那裏鏈接到它們。假設你使用的是被稱爲HTML文件夾...

  • 項目根
    • HTML
      • page1.cshtml
      • page2.cshtml

然後,你應該可以得到任何頁面來渲染通過去http://yourwebsite.com/HTML/page2.cshtml。在您的HTML中,標記將與鏈接到任何其他靜態資源的標記相同。

<a href="@Url.Content("~/HTML/page2.cshtml")">Link</a> 

refer here的網頁上