鏈接的地址,可以根據路由規則動態生成,不用寫死,文檔結構有變化時,依然可以找到正確的路徑 1.url.Action(只生成URL) 有很多重載方法,可以根據需要選擇,生成URL時,會根據路由規則生成,不過調用時也是根據路由規則定址,所以OK 2.Html.ActionLink(生成整個Link標簽) ...
鏈接的地址,可以根據路由規則動態生成,不用寫死,文檔結構有變化時,依然可以找到正確的路徑
1.url.Action(只生成URL)
有很多重載方法,可以根據需要選擇,生成URL時,會根據路由規則生成,不過調用時也是根據路由規則定址,所以OK
<a href="@Url.Action("GetStuDetail","Student",new {id=1001,gender=1})">學員詳情</a>
//路由規則 routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); //匹配結果 <a href="/Student/GetStuDetail/1001?gender=1">學員詳情</a>
2.Html.ActionLink(生成整個Link標簽)
//View頁面生成標簽 @Html.ActionLink("新增學員", "AddNewStu", "Student", new { gender = 1, age = 10, name = "李磊" }, //Url參數 new { @class="AddStuLink",title="新增學員"}) //Html標簽屬性 //路由規則 routes.MapRoute( name: "Test1", url: "{action}/{controller}", defaults: new { controller = "Home", action = "Index" } ) //生成的鏈接 <a title="新增學員" class="AddStuLink" href="/AddNewStu/Student?gender=1&age=10&name=%E6%9D%8E%E7%A3%8A">新增學員</a>
標簽根據路由規則生成URL,所以,action在前,controller在後,路由中對要求必須有Controller和action,但位置不做要求,可以起到一定的屏蔽作用
註意 url的生成與路由表息息相關,路由規則變化後,url對應變化,路由表不可隨意變更
以上兩種方法只匹配路由表中第一條路由(controller和action) url有的,作為路由,沒有的作為參數。
<a href='@Url.Action("StudentDetail","Student",new {id=1001,age=20,gender=1})'>查看學員詳情</a> //路由規則1 routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = 10 } ); //生產的鏈接 <a href="/Student/StudentDetail/1001?age=20&gender=1">查看學員詳情</a> //其他的作為參數 //路由規則2 routes.MapRoute( name: "Test1", url: "{controller}/{action}/{id}/{age}/{gender}", defaults: new { controller = "Home", action = "Index", id = 10 } ); //生成的鏈接 <a href="/Student/StudentDetail/1001/20/1">查看學員詳情</a> //匹配到,作為路由