您的位置:首页 > 其它

MVC基础知识学习总结

2015-11-18 21:48 387 查看
先看下**.cshtml文件里的

<p>
请输入用户名和密码。如果您没有帐户,请 @Html.ActionLink("注册", "Register",new {TRTR=3})。
</p>
上面这个@Html.ActionLink("注册","Register",new {TRTR=3})会被解析成一个超链接的形式
<a href="/Account/Register/3">注册</a>
下面问题来了,我们改怎么获取这个3呢?
如果上面的代码改这样的:@Html.ActionLink("注册","Register",new {page=3}),我们想要获取这个3的话,只需要用@Request.QuestString["page"]就可以得到这个3了。但是由于上面的参数是TRTR,这个TRTR与MapRoute里面的trtr是一样的,所以是默认的。所以浏览器会直接解析成<a href="/Account/Register/3">注册</a>。那么获取默认的路由id怎么获取呢?
1.<pre class="csharp" name="code">public ActionResult Register(int id)  //这个id就是默认的3
{
ViewData["id"] = id;
return View();
}


然后在cshtml文件里直接用ViewData["id"]。当然这里用ViewBag.id=id也可以。
2.<label>@Request.RequestContext.RouteData.Values["TRTR"];</label><br/>


这样也可以获取到3
3 <label>@ViewContext.RouteData.Values["trtr"];</label><br/>
<label>@ViewContext.RouteData.Values["action"]</label><br />
<label>@ViewContext.RouteData.Values["controller"]</label><br />
这样也可以直接获取默认的路由Controller,action,还有后面的参数3
注册路由的文件里的:Global.asax.cs文件里的代码:

public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}

public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
"Default", // 路由名称
"{controller}/{action}/{trtr}", // 带有参数的 URL
new { controller = "Home", action = "Index", trtr = UrlParameter.Optional } // 参数默认值
);

}

protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();

// 默认情况下对 Entity Framework 使用 LocalDB
Database.DefaultConnectionFactory = new SqlConnectionFactory(@"Data Source=(localdb)\v11.0; Integrated Security=True; MultipleActiveResultSets=True");

RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: