在传统的网站网址显示为:网址asp.net的MVC方式
通常意味着页面坐在下面的根命名为“主题”子文件夹,并有一个网页名为default。 htm(或类似)。
我试图让我的头脑与MVC的做事方式和理解路由的足够知道我应该考虑URL的不同。
所以,如果我有一个数据库驱动的页面,我通常脚本在位于/Topics/index.aspx的物理页面 - 这看起来在MVC应用程序?
MNY THX --steve ...
在传统的网站网址显示为:网址asp.net的MVC方式
通常意味着页面坐在下面的根命名为“主题”子文件夹,并有一个网页名为default。 htm(或类似)。
我试图让我的头脑与MVC的做事方式和理解路由的足够知道我应该考虑URL的不同。
所以,如果我有一个数据库驱动的页面,我通常脚本在位于/Topics/index.aspx的物理页面 - 这看起来在MVC应用程序?
MNY THX --steve ...
它看起来就像你想要的一样。
路由使URL变得非常虚拟。在asp.net mvc中,它将结束于指定的控制器动作方法,该方法将决定进一步做什么(即 - 它可以返回指定的视图,无论它是物理位置,它可以返回纯文本,它可以返回以JSON/XML序列化的内容) 。
这里有一些外部链接:
URL routing introduction通过ScottGu
ASP.NET MVC tutorials由斯蒂芬·瓦尔特
你将不得不与该主题控制器上的动作相关联的默认视图。
例如,列表页面(list.aspx)与其他视图绑定到主题控制器的列表操作。
这是假设您可以更改的默认路由引擎规则。
更多在这里阅读: http://weblogs.asp.net/scottgu/archive/2007/12/03/asp-net-mvc-framework-part-2-url-routing.aspx
恕我直言,这是你需要什么你的路由。
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Topics", action = "Index", id = "" } // Parameter defaults
);
您需要一个可以构建View(主题)的TopicsController。
我不认为这是一个好主意,创建具有特定控制器/操作作为默认值的'通用'路线,除非这些不是主页/索引。 – 2009-06-22 14:28:12
这听起来像你正在使用的资源(主题,用户等)方面打破你的网站构建你的网站。这很好,因为现在你可以或多或少地考虑控制器而不是文件夹。
假设您在WebForms ASP.NET中有这样的结构。
-Topics
-index.aspx
-newtopic.aspx
-topicdetails.aspx
-Users
-index.aspx
-newuser.aspx
-userdetails.aspx
在MVC应用程序的结构将是非常从一个用户点是相同的,但不是一个URL映射到一个文件夹,你的URL映射到控制器。它不是具有文件的文件夹(资源),而是具有操作。
-TopicController
-index
-new
-details
-UserController
-index
-new
-details
这些Actions
中的每一个然后才会决定什么看法(是这个网站,或JSON/XML)需要返回给浏览器。
动作可以采取不同的行为,具体取决于它们重复使用的HTTP动词。例如;
public class UserController : Controller
{
public ActionResult Create()
{
return View(new User());
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(User user)
{
// code to validate /save user
if (notValid)
return new View(user);
else
return new View("UserCreatedConfirmation");
}
}
这有点的RESTful网址,我建议你看看一个煮熟的版本。他们可以帮助简化应用程序的设计。
需要注意的是,.NET路由不是特定于MVC的:它也可以被标准WebForms应用程序使用。 – 2009-06-22 19:11:17