我的.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.
如何立即设置控制器,以便我可以通过控制器访问视图......?
祝你好运
答案 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应该调用您的页面类型控制器来处理对站点的根页面的请求。