1
我可以在不編寫操作方法的情況下將cshtml頁面作爲視圖提供服務嗎?因此,如果我有一個名爲Help的控制器和一個名爲Money.cshtml的視圖,我想以localhost/help/money的形式訪問它,而無需編寫任何操作方法?cshtml /無操作方法的視圖
我可以在不編寫操作方法的情況下將cshtml頁面作爲視圖提供服務嗎?因此,如果我有一個名爲Help的控制器和一個名爲Money.cshtml的視圖,我想以localhost/help/money的形式訪問它,而無需編寫任何操作方法?cshtml /無操作方法的視圖
你可以做如下的事情。 定義映射到只有一個動作例如爲:
routes.MapRoute(
"Help_default", // Route name
"help/{path}", // URL with parameters
new { controller = "About", action = "Page" }
);
然後你的幫助控制器可能看起來像下面的路線。它基本上只是抓取來自URL的路徑並將其作爲模型傳遞給視圖。然後
public class HelpController : Controller
{
public ViewResult Page(string path)
{
return View("Page", path);
}
}
你的頁面視圖可能看起來像:
@model string
@{
string viewPath = string.Format("~/Views/Help/{0}.cshtml", Model);
ViewEngineResult result = ViewEngines.Engines.FindView(this.ViewContext.Controller.ControllerContext, viewPath, null);
if (result.View != null)
{
@Html.Partial(viewPath)
} else {
// Define a not found view in the shared folder?
@Html.Partial("NotFound")
}
}
這基本上檢查是否視圖與路徑或不存在。這感覺有點骯髒,但我認爲它會工作。
你在不寫動作方法的目標是什麼?這是爲了管理您的URL(即具有該確切的URL localhost/help/money),還是您不想在控制器中編寫操作方法?編寫一個動作方法很簡單,它不會做任何事情,只會呈現具有相同名稱的視圖。 –
我不想在執行返回視圖時編寫操作方法。我有很多頁面是靜態的,我希望它們看起來與我的視圖屬於同一個地方。 – orangesherbert