通过episerver CMS中的控制器访问视图

时间:2016-05-12 08:53:38

标签: c# asp.net asp.net-mvc asp.net-mvc-4 episerver

我的.NET项目中有一个MVC控制器,它是标准MVC控制器的一点点修改版本,因为我使用的是Episerver CMS。控制器的代码如下:

 public class StartPageController : PageController<StartPage>
    {
        // GET: StartPage
        public ActionResult Index(StartPage currentPage)
        {

            return View(currentPage);
        }
    }

现在,当我尝试通过控制器访问视图时,如下所示:

http://localhost:port/TestPage 

这应该(使用常规的MVC控制器)返回我创建的Index.cshtml视图,但它没有...我得到的错误是:

HTTP Error 404.0 - Not Found
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.

如何立即设置控制器,以便我可以通过控制器访问视图......?

祝你好运

1 个答案:

答案 0 :(得分:3)

如果您正在提供CMS页面并且在场景后面有页面控制器,则必须访问具有CMS页面名称的URL(&#34; URL中的名称&#34;页面的属性)。这是EPiServer在尝试&#34;路由&#34;时所寻找的值。您对相应页面控制器的请求。

因此理论上你可能有名为private void BindGrid(string parameter) { string[] array = parameter.Split(); string constring = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\SearchTable.mdf;Integrated Security=True;Connect Timeout=30"; using (SqlConnection con = new SqlConnection(constring)) { con.Open(); using (SqlCommand cmd = new SqlCommand("SELECT * FROM Projects", con)) { cmd.CommandType = CommandType.Text; using (SqlDataAdapter sda = new SqlDataAdapter(cmd)) { using (DataTable dt = new DataTable()) { sda.Fill(dt); List<DataRow> rowsToShow = new List<DataRow>(); foreach (DataRow row in dt.Rows) { SqlDataReader reader = cmd.ExecuteReader(); if (reader.HasRows) { while (reader.Read()) { int index = reader.GetInt32(0); string a = reader.GetString(1); string b = reader.GetString(2); string c = reader.GetString(3); string d = reader.GetString(4); string e = reader.GetString(5); string f = reader.GetString(6); string g = reader.GetString(7); string h = reader.GetString(8); string i = reader.GetString(9); string j = reader.GetString(10); string t = a + " " + b + " " + c + " " + d + " " + e + " " + f + " " + g + " " + h + " " + i + " " + j; if (array.Any(value => t.IndexOf(value, StringComparison.CurrentCulture) != -1)) { rowsToShow.Add(row); } } } reader.Close(); } dataGridView1.SetBinding(ItemsControl.ItemsSourceProperty, new Binding { Source = dt }); rows = dataGridView1.Items.Count.ToString(); Rows.Content = rows + " Entries"; } } } con.Close(); } } 的页面控制器,页面名称为&#34; Hello&#34;。然后你需要点击&#34; http://localhost/hello&#34;并且EPiServer将确保请求&#34; / hello&#34;被路由到您的页面控制器。

另一个说明。如果这是ThisIsMyPageController : PageController<StartPage>并且应该作为您身边的根页,并且如果EPiServer网站设置正确 - 您应该只访问&#34; http://localhost&#34;并且EPiServer应该调用您的页面类型控制器来处理对站点的根页面的请求。