普通Html页面的任何更简洁的方式?

时间:2015-04-02 14:57:32

标签: asp.net-mvc

我的应用程序拥有一定数量的普通网页。以下是否有捷径:

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(); }

2 个答案:

答案 0 :(得分:1)

您可能需要查看HandleUnknownAction

  

当请求与此控制器匹配时调用,但在控制器中找不到具有指定操作名称的方法。

因此,您可以为您的页面创建一个只处理HandleUnknownAction方法的控制器,如果存在则返回该视图

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

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

因此,如果您的控制器名为包含视图page1.cshtml page2.cshtml page3.cshtml等的网页,则可以使用pages/page1调用它们,而无需使用重复代码填充控制器

在实际视图中,您只需添加

即可
@{
    Layout = "layoutpath";
 }

因为默认情况下创建视图时将为null

More info here

答案 1 :(得分:1)

鉴于您只是返回一些HTML并且由于包含布局文件而仅使用剃刀语法,我建议使用WebPages。这些基本上是剃刀cshtml动态文件,无需通过控制器/操作即可处理。

首先,通过查找以下行来确认您的web.config中是否已启用WebPages(如果尚未启用):<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了解有关网页的更多信息