我的应用程序拥有一定数量的普通网页。以下是否有捷径:
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(); }
答案 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
答案 1 :(得分:1)
鉴于您只是返回一些HTML并且由于包含布局文件而仅使用剃刀语法,我建议使用WebPages
。这些基本上是剃刀cshtml
动态文件,无需通过控制器/操作即可处理。
首先,通过查找以下行来确认您的web.config中是否已启用WebPages
(如果尚未启用):<add key="webpages:Enabled" value="true" />
。接下来,只需将这些.cshtml
文件视为独立文件(无需控制器/操作)。您可以将所有这些移动到某个根文件夹并从那里链接到它们。假设您使用的是名为HTML的文件夹...
然后,您应该可以通过转到http://yourwebsite.com/HTML/page2.cshtml
来获取任何要呈现的页面。在HTML中,标记与链接到任何其他静态资源的标记相同。
<a href="@Url.Content("~/HTML/page2.cshtml")">Link</a>
请访问refer here了解有关网页的更多信息