MVC實用集錦(1)
最近的專案是用asp.net MVC開發的,所以希望從實際開發的角度,通過一些例項,幫助大家快速的開發asp.net MVC程式。
1.建立控制元件,MVC中通過htmlHelper生成HTML標籤。
1 <%= Html.TextBox("UserName")%>
2 <%= Html.TextBox("UserName","Coolin")%>
3 <%= Html.TextBox("UserName","Coolin",
new { @class = "className",disabled = true })%>
最後一項htmlAttributes,可以設定樣式等屬性。
2.RegisterRoutes帶來了什麼變化。通過VS建立一個MVC應用程式,會在Global.asax中看到下面的程式碼(我添加了第一條)
複製程式碼
1 routes.MapRoute(
2 "Account",
3 "Account/List/{type}",
4 new { controller = "Account", action = "List" }
5 );
6
7 routes.MapRoute(
8 "Default",
9 "{controller}/{action}/{id}",
10 new { controller = "Home", action = "Index", id = "" }
11 );
複製程式碼
現在看一下它帶來的變化,假設view有如下程式碼
1 <%= Html.ActionLink("男性", "List", new { type = "Man" }) %>
2 <%= Html.ActionLink("女性", "List", new { type = "Woman" }) %>
或
1 <%= Url.RouteUrl("Account", new { controller = "Account", action = "List", type= "Man" }) %>
2 <%= Url.RouteUrl("Account", new { controller = "Account", action = "List", type= "Woman" }) %>
對應的Url應該是 localhost:XXXX/Account/List/Man 和 localhost:XXXX/Account/List/Woman
當然也可以不在Global.asax中註冊那條規則,對應的Url就會變成大家熟悉的 localhost:XXXX/Account/List?type=Man。
順便提一下我在開發中遇到過的一個問題,還以上面的例子為例,在程式的開發階段,沒有加入剛才那條規則,當我們在程式中加入了 sitemap(mvcsitemap),結果卻是sitemap的路徑永遠不能指向Woman的路徑,可能是sitemap不能通過 ?後面引數區分路徑,後來加入了這條規則,url中去掉引數,問題解決了。
3.ajax非同步請求controller
controller中有如下程式碼
1 public ActionResult Delete(Guid id)
2 {
3 Delete(id);
4 return Json(new { success = true });
5 }
view中程式碼如下
複製程式碼
1 $.getJSON(<%= Url.Action("Delete", "Account",new { id="xx-xx-xxx" }) %>,
2 function(result) {
3 if (result.success) {
4 //通過指令碼移除此行
5 alert("刪除成功!")
6 }
7 });
複製程式碼
4.擴充套件htmlHelper,方便在view中呼叫後臺程式碼。
步驟 1)建立靜態類 HtmlHelperExtension。
2)引入 System.Web.Mvc 。
3)建立需要的方法,例如:
1 public static string FirstExtension(this HtmlHelper htmlHelper)
2 {
3 return "FirstExtension";
4 }
4)在view中引入HtmlHelperExtension所在的名稱空間(一定不要忘,我忘了很多次)
5)在view中使用,例如 <%= Html.FirstExtension() %>