一直忙于做项目,一直没有机会认真学习一下新技术,今天突然兴致来了,
要把MVC与SilverLight入个门。学习了半天,悟出来一些基本道理,记录一下。
一、第一个Routing
代码:
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
namespace FirstMVC
{
// Note: For instructions on enabling IIS6 or IIS7 classic mode,
// visit http://go.microsoft.com/?LinkId=9394801
public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
//新建一个Routing规则,这里要放在默认的规则前面,否则会先匹配默认的Routing
routes.MapRoute(
"规则名称",//Routing规则名称
"myurl",//这里你可以任意定义路径,通过http://localhost/myurl 就可以访问。
new { controller = "Home", action = "MyView" }
);
//这是默认生成的Routing
routes.MapRoute(
"Default", // Route name
//参数规则,一般是:控制器名/动作名/参数
"{controller}/{action}/{id}", // URL with parameters
//这里的默认参数,是指没有参数的时候,使用这些参数。比如http://localhost/ 相当于http://localhost/Home/Index
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
}
protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
}
}
}
参考:http://www.0379zd.com/news/show/105001.htm
创建一个Route类实例,最关键的是为以下几个属性赋值:
属性名称 说明
1.Constraints 获取或设置为 URL 参数指定有效值的表达式的词典。
举例:{controller}/{action}/{id}
2.DataTokens 获取或设置传递到路由处理程序但未用于确定该路由是否匹配 URL 模式的自定
义值。
举例:new RouteValueDictionary { { "format", "short" } }
3.Defaults 获取或设置要在 URL 不包含所有参数时使用的值。
举例:new { controller = "Home", action = "Index", id = "" }
4.RouteHandler 获取或设置处理路由请求的对象。
举例:new MvcRouteHandler()
Url 获取或设置路由的 URL 模式。 new { controller = @"[^\.]*" }
二、第一个View
直接在vs08解决方案下右击View文件夹,添加->View,没有反应。
据说是因为没有View模板,需要安装一个插件,暂时不管了。
直接把Index.aspx这个View复制一个,修改成MyView.aspx即可。如下:
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
<asp:Content ID="indexContent" ContentPlaceHolderID="MainContent" runat="server">
<h2>这是从Action传递过来的数据<%= Html.Encode(ViewData["Message"]) %></h2>
<p>
To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">http://asp.net/mvc</a>.
</p>
</asp:Content>
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace FirstMVC.Views.Home
{
public partial class MyView : ViewPage
{
}
}
三、第一个Action
感觉Action相当于Page_Load事件,在页面输出前加载一些数据吧。
在这里执行业务逻辑,然后把执行后的数据发给View,如下:
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
namespace FirstMVC.Controllers
{
[HandleError]
public class HomeController : Controller
{
public ActionResult Index()
{
ViewData["Title"] = "Home Page";
ViewData["Message"] = "Welcome to ASP.NET MVC!";
return View();
}
public ActionResult About()
{
ViewData["Title"] = "About Page";
return View();
}
/// <summary>
/// 我的第一个
/// </summary>
/// <returns></returns>
public ActionResult MyView()
{
ViewData["Title"] = "MyView Title";//这里的数据可以传递到View
ViewData["Message"] = "MyView Message";
return View();
}
}
}
注意这里每做一次修改,最好ctrl+shift+B生成一下,再刷新一下。