欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

ASP.NET MVC學(xué)習(xí)筆記

 更新時(shí)間:2009年10月31日 23:07:22   作者:  
ASP.NET MVC 1.0發(fā)布有段兒時(shí)間了,剛發(fā)布不久的時(shí)候試用了一下,做了一個(gè)簡(jiǎn)單的BBS,現(xiàn)在總結(jié)一些經(jīng)驗(yàn)和小技巧和大家分享。
網(wǎng)上關(guān)于ASP.NET MVC的系列教程有好幾個(gè),所以就不從頭開始介紹了,結(jié)尾處給大家推薦了幾個(gè)鏈接,需要的話可以從頭系統(tǒng)的看看。

1、ASP.NET MVC介紹及與ASP.NET WebForm的區(qū)別

剛開始為了搞清楚ASP.NET MVC到底值不值得用,翻來覆去想了一個(gè)多禮拜,看了好多資料和評(píng)論,最后決定還是值得一用。MVC不是一個(gè)簡(jiǎn)單的設(shè)計(jì)模式,更像一種架構(gòu)模式,或者一種思想,剛開始一聽MVC想到的就是模板引擎,NVelocity,StringTempleate等,但感覺如果只是為了用模板這種獨(dú)立的前臺(tái)設(shè)計(jì)方式,沒必要用ASP.NET MVC,大多數(shù)情況用Repeaterk控件和自定義控件兒就能做到,而且ASPX頁面上本來就可以寫c#代碼,一些比較復(fù)雜的界面表現(xiàn)邏輯用普通的WebForm也能實(shí)現(xiàn),其實(shí)ASP.NET MVC的VIEW部分默認(rèn)用的還是aspx的解析器。ASP.NET MVC的View部分讓你寫一些大型的,布局復(fù)雜的網(wǎng)站更方便,更底層,更直接,很受對(duì)css,js很熟悉的開發(fā)者的歡迎。

當(dāng)你理解了MVC的思想后,會(huì)發(fā)現(xiàn)ASP.NET MVC的好處真正在于Controller和Action,你寫一段代碼能很明確的知道是在處理什么請(qǐng)求,畢竟web程序處理的是一個(gè)一個(gè)的http請(qǐng)求,不像windows桌面程序,基于事件驅(qū)動(dòng)更直觀。ASP.NET MVC的Controller讓你寫一些web api或者rest風(fēng)格的接口很方便(以前可能要用HttpHandler來做),這些Controller只負(fù)責(zé)提供數(shù)據(jù)(具體的ActionResult類,如JsonResult,JavascriptResult等)給使用者,比如一個(gè)Ajax調(diào)用,或者View層。

至于Model層,我看網(wǎng)上大多數(shù)人是用LINQ TO SQL實(shí)現(xiàn)的,畢竟使用起來很簡(jiǎn)單,設(shè)計(jì)好表,用LINQ 設(shè)計(jì)器往vs.net里一拖就能用了。而且本身就是強(qiáng)類型的,再在自動(dòng)生成的代碼上加一些分部方法,就可以實(shí)現(xiàn)數(shù)據(jù)的有效性驗(yàn)證等。還有就是對(duì)LINQ做的Model進(jìn)行數(shù)據(jù)持久化和查詢的時(shí)候更方便,直接用DbContext一個(gè)類,增刪改查全能搞定。

有得就有舍,ASP.NET MVC雖然提供了先進(jìn)的思想和一些便利,但ASP.NET以前的一些東西不能用了,比如以前自己寫的一些服務(wù)器控件兒不能用了,WebPart,皮膚,各種數(shù)據(jù)綁定控件等都不能用了,但Master頁還能用,Asp.net Ajax control toolkit(服務(wù)端)也不能用了,但asp.net ajax library(客戶端js庫)還能繼續(xù)使用,基于頁面和目錄的授權(quán)不能用了(因?yàn)楝F(xiàn)在沒頁面,只有view了),但MemberShip和Forms身份驗(yàn)證還是支持的。標(biāo)準(zhǔn)WebForm的生命周期變了,好些事件沒了,現(xiàn)在你可以寫一些攔截器(Action攔截器、Result攔截器和Exception攔截器)來影響請(qǐng)求的處理過程,還有一些區(qū)別,總之失去的東西,都有變通的方法能找吧回來。

2、linq to sql如何獲取插入語句產(chǎn)生的標(biāo)識(shí)列的值?

其實(shí)很簡(jiǎn)單,把對(duì)象插入數(shù)據(jù)庫后,直接取值就行了,如下BBSPost是一個(gè)實(shí)體類,其中PostID在數(shù)據(jù)庫里是自增列。
復(fù)制代碼 代碼如下:

var db = new BBSDbContext(connstr);
BBSPost post = new BBSPost()
post.PostUser = User.Identity.Name;
post.PostTime = DateTime.Now;
db.BBSPosts.InsertOnSubmit(post);
db.SubmitChanges();
int postid = post.PostID; //這里就能取到標(biāo)識(shí)列的值。

3、ASP.NET MVC里在請(qǐng)求提交后如何后維持滾動(dòng)條位置?

在WebForm里再簡(jiǎn)單不過了,在web.config里配置MaintainScrollPositionOnPostBack=true就搞定了,但在MVC里就不行了。我們知道了原理后,可以自己實(shí)現(xiàn),其實(shí)就是在提交表單或者滾動(dòng)條滾動(dòng)的事件里捕獲當(dāng)前滾動(dòng)條的位置,把數(shù)值放在一個(gè)隱藏域里,提交給服務(wù)端,服務(wù)端應(yīng)答后,從隱藏域里取出滾動(dòng)條的位置,用js操縱滾動(dòng)條滾動(dòng)到上次的位置。
我們先在View里寫一個(gè)隱藏域,如下
<%= Html.Hidden("scroll", ViewData["scrool"])%>
然后在處理客戶端請(qǐng)求的action里給ViewData里存儲(chǔ)一下提交上來的值(從FormCollection里?。?。
復(fù)制代碼 代碼如下:

public ActionResult reply(BBSPost post, FormCollection coll) {
...
ViewData["scroll"] = coll["scroll"];
...
return View("show_post",posts);
}

這樣頁面提交后隱藏域里就會(huì)保存著提交前滾動(dòng)條的位置,然后我們?cè)谟肑Query寫一些邏輯實(shí)現(xiàn)最終的效果。
復(fù)制代碼 代碼如下:

<script type="text/javascript">
$(function() {
$(document).scroll(function() {
//在滾動(dòng)條滾動(dòng)的時(shí)候更新隱藏域里滾動(dòng)條的位置值,經(jīng)測(cè)試不支持IE8,汗
$("#scroll").val(document.documentElement.scrollTop);
});
$("form").submit(function() {
//在表單提交的時(shí)候更新隱藏域里滾動(dòng)條的位置值
$("#scroll").val(document.documentElement.scrollTop);
return true;
});
//在document.load事件里取出隱藏域的值,并設(shè)置滾動(dòng)條的位置
document.documentElement.scrollTop = $("#scroll").val();
});

</script>

4、驗(yàn)證用戶輸入

數(shù)據(jù)有效性的驗(yàn)證基本上哪個(gè)程序都躲不了,LINQ 和ASP.NET MVC的配合,讓數(shù)據(jù)驗(yàn)證的實(shí)現(xiàn)也很方便。
LINQ TO SQL設(shè)計(jì)器自動(dòng)生成的類是一個(gè)分部類,就是半塊兒的類,你可以寫一個(gè)分步類,在自動(dòng)生成的類上加一些擴(kuò)展的方法,如下我們?cè)贚INQ實(shí)體類BBSPost上加了一個(gè)GetRuleViolations方法,一個(gè)IsValid屬性,其中GetRuleViolations方法驗(yàn)證給實(shí)體類賦的值的有效性,用yield關(guān)鍵字返回一個(gè)枚舉器,這里可以寫你自己的數(shù)據(jù)有效性驗(yàn)證邏輯。
IsValid屬性內(nèi)部調(diào)用GetRuleViolations方法,如果返回的枚舉器的Count不是0的話,表示數(shù)據(jù)有效性驗(yàn)證不通過。
另外為了方式LINQ TO SQL往數(shù)據(jù)庫里寫入無效數(shù)據(jù),我們給OnValidate分布方法加了兩行代碼,在數(shù)據(jù)有效性驗(yàn)證不通過的情況下寫數(shù)據(jù)庫之前拋出異常。
復(fù)制代碼 代碼如下:

public partial class BBSPost {
public bool IsValid {
get { return (GetRuleViolations().Count() == 0); }
}

public IEnumerable<RuleViolation> GetRuleViolations() {
if (String.IsNullOrEmpty(Title))
yield return new RuleViolation("標(biāo)題必須輸入", "Title");
if (String.IsNullOrEmpty(Content))
yield return new RuleViolation("內(nèi)容必須輸入", "Content");
yield break;
}

partial void OnValidate(ChangeAction action) {
if (!IsValid)
throw new ApplicationException("Rule violations prevent saving");
}
}

RuleViolation是一個(gè)輔助類,很簡(jiǎn)單。
復(fù)制代碼 代碼如下:

public class RuleViolation {

public string ErrorMessage { get; private set; }
public string PropertyName { get; private set; }

public RuleViolation(string errorMessage) {
ErrorMessage = errorMessage;
}

public RuleViolation(string errorMessage, string propertyName) {
ErrorMessage = errorMessage;
PropertyName = propertyName;
}
}

在寫action的時(shí)候,捕獲SubmitChanges操作的異常,然后給ModelState里添加自定義驗(yàn)證邏輯的異常,ModelState會(huì)把添加進(jìn)去的異常傳遞給View層,供View層使用。
復(fù)制代碼 代碼如下:

try {
var db = new BBSDbContext(GlobalHelper.Conn);
post.PostUser = User.Identity.Name;
//其它賦值操作
db.BBSPosts.InsertOnSubmit(post);
db.SubmitChanges();
ModelState.Clear();
}
catch (Exception ex) {
ModelState.AddModelErrors(post.GetRuleViolations());
ModelState.AddModelError("exception", ex);
}
默認(rèn)的ModelState沒有AddModelErrors方法,只有AddModelError方法,我們是后來給他加了一個(gè)擴(kuò)展方法,如下
public static class ModelStateHelpers {
public static void AddModelErrors(this ModelStateDictionary modelState, IEnumerable<RuleViolation> errors) {
foreach (RuleViolation issue in errors) {
modelState.AddModelError(issue.PropertyName, issue.ErrorMessage);
}
}
}

在View層使用了Html.ValidationMessage方法在合適的位置輸出錯(cuò)誤描述,如果View呈現(xiàn)的時(shí)候ModelState里有錯(cuò)誤的話,會(huì)自動(dòng)顯示相應(yīng)的錯(cuò)誤描述,代碼示例如下。
復(fù)制代碼 代碼如下:

<p>
<label for="Title">
標(biāo)題:</label>
<%= Html.TextBox("Title", null, new { style = "width:700px;" })%>
<%= Html.ValidationMessage("Title") %>
</p>
<p>
<label for="Content">
內(nèi)容:</label>
<%= Html.TextArea("Content", null, new { style = "width:700px;height:100px;" })%>
<%= Html.ValidationMessage("Content")%>
</p>

5、LINGQ TO SQL的分頁

SQLSERVER 2005有很強(qiáng)悍的分頁函數(shù),LINQ TO SQL對(duì)其有很好的支持,IQueryable<T>的Skip和Take方法最終就生成分頁的SQL,先寫如下的一個(gè)幫助類(取自NerdDinner),這個(gè)類的屬性很簡(jiǎn)單,見名知意,就不介紹了。
復(fù)制代碼 代碼如下:

public class PaginatedList<T> : List<T> {

public int PageIndex { get; private set; }
public int PageSize { get; private set; }
public int TotalCount { get; private set; }
public int TotalPages { get; private set; }

public PaginatedList(IQueryable<T> source, int pageIndex, int pageSize) {
PageIndex = pageIndex;
PageSize = pageSize;
TotalCount = source.Count();
TotalPages = (int) Math.Ceiling(TotalCount / (double)PageSize);

this.AddRange(source.Skip(PageIndex * PageSize).Take(PageSize)); //這句會(huì)停止延遲加載,把數(shù)據(jù)加載到內(nèi)存里
}

public bool HasPreviousPage {
get {
return (PageIndex > 0);
}
}

public bool HasNextPage {
get {
return (PageIndex+1 < TotalPages);
}
}
}

使用起來很簡(jiǎn)單,用LINQ TO SQL得到一個(gè)IQueryable后,再用其New一個(gè)PaginatedList就表示一個(gè)已分頁的數(shù)據(jù)集了
復(fù)制代碼 代碼如下:

var posts = from post in db.BBSPosts
where post.CategoryID == id && post.ParentID == 0
orderby post.PostID descending
select post;
const int pageSize = 10;
var pagePosts = new PaginatedList<BBSPost>(posts, page ?? 0, pageSize);
return View(pagePosts);

posts是用linq to sql生成的一個(gè)IQueryable<BBSPost>對(duì)象,這時(shí)候SQL語句并沒有執(zhí)行,會(huì)延遲執(zhí)行,再new一個(gè)PaginatedList<BBSPost>的時(shí)候會(huì)對(duì)其生成的SQL語句進(jìn)行修改,最后把pagePosts傳遞給view層用就行了,View層我們使用了強(qiáng)類型的View,如下
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<SimpleBBS.Helpers.PaginatedList<SimpleBBS.Models.BBSPost>>" %>
頁面上要顯示上一頁,下一頁的鏈接,寫起來也很簡(jiǎn)單
復(fù)制代碼 代碼如下:

<div class="pagination">
<% if (Model.HasPreviousPage) { %>
<%= Html.RouteLink("上一頁",
"Default",
new { page=(Model.PageIndex-1) }) %>
<% } %>
<% if (Model.HasNextPage) { %>
<%= Html.RouteLink("下一頁",
"Default",
new { page = (Model.PageIndex + 1) })%>
<% } %>
</div>

6、查看LINQ TO SQL生成的SQL語句?

有人懷疑LINQ TO SQL的性能問題,認(rèn)為它生成的語句不靠譜,其實(shí)它生成的語句都是參數(shù)化查詢,一般的基于主鍵或者索引列的查詢及大多數(shù)更新操作性能應(yīng)該不會(huì)比手寫SQL差,如果還是不放心的話,可以把LINQ TO SQL生成的SQL打印出來,以避免性能查的語句產(chǎn)生。
如下代碼
復(fù)制代碼 代碼如下:

var db = new BBSDbContext(conn);
var posts = from post in db.BBSPosts
where post.CategoryID == 1 && post.ParentID == 0
orderby post.PostID descending
select new {post.PostID, post.Title, post.Content};
db.Log = Response.Output; //跟蹤自動(dòng)生成的SQL語句
rpt1.DataSource = posts;
rpt1.DataBind(); //只有真正執(zhí)行使用數(shù)據(jù)的語句時(shí),SQL查詢才會(huì)執(zhí)行,在這之前語句只是語句,自動(dòng)延遲執(zhí)行的。

會(huì)在頁面上看到LINQ TO SQL生成的SQL語句
SELECT [t0].[PostID], [t0].[Title], [t0].[Content] FROM [dbo].[bbs_Post] AS [t0] WHERE ([t0].[CategoryID] = @p0) AND ([t0].[ParentID] = @p1) ORDER BY [t0].[PostID] DESC -- @p0: Input Int (Size = 0; Prec = 0; Scale = 0) [1] -- @p1: Input Int (Size = 0; Prec = 0; Scale = 0) [0] -- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.30729.1
如果改成如下分頁方式
復(fù)制代碼 代碼如下:

var db = new BBSDbContext(conn);
var posts = from post in db.BBSPosts
where post.CategoryID == 1 && post.ParentID == 0
orderby post.PostID descending
select post;
db.Log = Response.Output;
rpt1.DataSource = posts.Skip(1 * 5).Take(5);
rpt1.DataBind();

會(huì)輸出如下SQL
SELECT [t1].[CategoryID], [t1].[PostID], [t1].[ParentID], [t1].[Title], [t1].[Content], [t1].[PostUser], [t1].[PostTime] FROM ( SELECT ROW_NUMBER() OVER (ORDER BY [t0].[PostID] DESC) AS [ROW_NUMBER], [t0].[CategoryID], [t0].[PostID], [t0].[ParentID], [t0].[Title], [t0].[Content], [t0].[PostUser], [t0].[PostTime] FROM [dbo].[bbs_Post] AS [t0] WHERE ([t0].[CategoryID] = @p0) AND ([t0].[ParentID] = @p1) ) AS [t1] WHERE [t1].[ROW_NUMBER] BETWEEN @p2 + 1 AND @p2 + @p3 ORDER BY [t1].[ROW_NUMBER] -- @p0: Input Int (Size = 0; Prec = 0; Scale = 0) [1] -- @p1: Input Int (Size = 0; Prec = 0; Scale = 0) [0] -- @p2: Input Int (Size = 0; Prec = 0; Scale = 0) [5] -- @p3: Input Int (Size = 0; Prec = 0; Scale = 0) [5] -- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.30729.1
可以看到這些查詢用的都是參數(shù)化查詢,不是拼SQL,而且還用了ROW_NUMBER函數(shù),LINQ TO SQL還是比較了解SQLSERVER的。

7、設(shè)置某個(gè)Action需要身份認(rèn)證?

因?yàn)榛陧撁娴氖跈?quán)不能使用了,我們只好對(duì)某個(gè)Action進(jìn)行授權(quán),比如要回復(fù)帖子的話需要進(jìn)行登錄,那么就在reply的action上加上需要身份驗(yàn)證的屬性修飾,如下
[AcceptVerbs(HttpVerbs.Post), Authorize]
?public ActionResult reply(BBSPost post, FormCollection coll) {
這種方式是以AOP注入方式實(shí)現(xiàn)的,更多的攔截器示例,或者想寫自己的攔截器可以google些資料看看。

8、如何把用戶提交的表單數(shù)據(jù)轉(zhuǎn)成強(qiáng)類型。

我們都知道網(wǎng)頁上提交的數(shù)據(jù)包括Form里和QueryString,在服務(wù)端取出來都是string類型的,在asp時(shí)代,我們需要一個(gè)一個(gè)的處理參數(shù),在ASP.NET MVC里就很方便了,比如你有一個(gè)BBSPost類,有Title和Content和CategoryId 3個(gè)屬性,而表單上有兩個(gè)文本框Title和Content,地址欄參數(shù)里有一個(gè)CategoryId,你可以直接在action里取到一個(gè)BBSPost類,而且屬性都給你填充好了,不用你取出一個(gè)一個(gè)的string再new一個(gè)BBSPost類,再轉(zhuǎn)類型賦值等一系列操作了,如下
public ActionResult reply(BBSPost post, FormCollection coll) {}
第一個(gè)參數(shù)會(huì)自動(dòng)填充成強(qiáng)類型,第二個(gè)參數(shù)可以取出原始的表單提交的數(shù)據(jù)。如果你想了解更多的表單數(shù)據(jù)和強(qiáng)類型數(shù)據(jù)的綁定,細(xì)節(jié),可以查查DefaultModelBinder是如何工作的。

9、給HTMLHelper加擴(kuò)展方法。

ASP.NET MVC里的一個(gè)最佳實(shí)踐就是給HTMLHelper加一些常用的擴(kuò)展方法以供View層方便使用,不要到處寫幫助類,比如在顯示帖子的時(shí)候要格式化帖子成HTML格式,我們寫了如下的擴(kuò)展方法
復(fù)制代碼 代碼如下:

public static class HtmlHelperExtension {
public static string Text2Html(this HtmlHelper helper, string input) {
input = input.Replace(" ", "&nbsp;");
input = input.Replace("\r\n", "<br />");
input = input.Replace("\t", "&nbsp;&nbsp;&nbsp;");
return input;
}
}

在view上先引用擴(kuò)展方法所在的命名空間
<%@ Import Namespace="SimpleBBS.Helpers" %>
然后擴(kuò)展方法就能使用了,如下
<%= Html.Text2Html(Html.Encode(item.Content)) %>

10、如何定位腳本和CSS的位置

如果我們目錄級(jí)別特別多,把腳本,樣式表等放在一個(gè)固定的目錄后,在特定的子目錄訪問這些資源路徑可能不一致,在WebForm的時(shí)候只有服務(wù)端控件才能使用~語法,無論是部署在站點(diǎn)根目錄還是虛擬目錄,~都能表示應(yīng)用的根目錄,在ASP.NET MVC里我們可以用Url.Content來使用~,如下
<script src="<%=Url.Content("~/Scripts/jquery-1.3.2.min.js")%>" type="text/javascript"></script>

相關(guān)文章

  • Asp.Net中索引器的用法分析

    Asp.Net中索引器的用法分析

    這篇文章主要介紹了Asp.Net中索引器的用法,以實(shí)例形式詳細(xì)分析了Asp.Net中索引器的定義、屬性與具體使用方法,并附帶說明了相關(guān)的注意事項(xiàng),在asp.net項(xiàng)目開發(fā)中有不錯(cuò)的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-11-11
  • .Net?Core?進(jìn)程守護(hù)之Supervisor使用詳解

    .Net?Core?進(jìn)程守護(hù)之Supervisor使用詳解

    這篇文章主要介紹了.Net?Core?進(jìn)程守護(hù)之Supervisor使用,Supervisor它可以很方便的監(jiān)聽、啟動(dòng)、停止、重啟一個(gè)或多個(gè)進(jìn)程,對(duì).Net?Core?進(jìn)程守護(hù)之Supervisor使用相關(guān)知識(shí)感興趣的朋友一起看看吧
    2022-04-04
  • ASP.NET性能優(yōu)化小結(jié)(ASP.NET&C#)

    ASP.NET性能優(yōu)化小結(jié)(ASP.NET&C#)

    ASP.NET性能優(yōu)化,提高頁面的執(zhí)行效率與下載速度,等很多需要考慮的細(xì)節(jié),編程人員值得參考下。
    2011-01-01
  • ASP.NET配置KindEditor文本編輯器圖文教程

    ASP.NET配置KindEditor文本編輯器圖文教程

    這篇文章主要為大家分享了ASP.NET配置KindEditor文本編輯器圖文教程,很實(shí)用的學(xué)習(xí)教程,感興趣的小伙伴們可以參考一下
    2016-05-05
  • Cookies的各方面知識(shí)(基礎(chǔ)/高級(jí))深度了解

    Cookies的各方面知識(shí)(基礎(chǔ)/高級(jí))深度了解

    Cookies想必所有人都了解本文將圍繞Cookies基礎(chǔ)知識(shí)(什么是Cookies/Cookies如何傳遞/Cookies如何存儲(chǔ)/Cookies如何查看)Cookies高級(jí)知識(shí)/Cookie的限制等等方方面面深入了解,感興趣的朋友可以參考下,或許對(duì)你學(xué)習(xí)cookies有所幫助
    2013-02-02
  • .NET?Core利用BsonDocumentProjectionDefinition和Lookup進(jìn)行?join?關(guān)聯(lián)查詢(推薦)

    .NET?Core利用BsonDocumentProjectionDefinition和Lookup進(jìn)行?join?

    這篇文章主要介紹了.NET?Core利用BsonDocumentProjectionDefinition和Lookup進(jìn)行join關(guān)聯(lián)查詢,這里主要介紹一下查詢角色的所有用戶的例子,文章結(jié)合實(shí)例代碼給大家詳細(xì)講解,需要的朋友可以參考下
    2022-10-10
  • .NET使用QuestPDF高效地生成PDF文檔

    .NET使用QuestPDF高效地生成PDF文檔

    在.NET平臺(tái)中操作生成PDF的類庫有很多如常見的有iTextSharp、PDFsharp、Aspose.PDF等,本文主要介紹的是如何使用QuestPDF實(shí)現(xiàn)發(fā)票PDF文檔生成功能,需要的可以了解下
    2024-01-01
  • 把js文件編譯成dll供頁面調(diào)用的方法

    把js文件編譯成dll供頁面調(diào)用的方法

    這篇文章主要介紹了把js文件編譯成dll供頁面調(diào)用的方法,需要的朋友可以參考下
    2014-08-08
  • .net core 基于Hangfire+Mysql持久化實(shí)現(xiàn)定時(shí)任務(wù)配置方法

    .net core 基于Hangfire+Mysql持久化實(shí)現(xiàn)定時(shí)任務(wù)配置方法

    這篇文章主要介紹了.net core 基于Hangfire+Mysql持久化實(shí)現(xiàn)定時(shí)任務(wù)配置方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-07-07
  • ASP.NET實(shí)現(xiàn)TreeView的XML數(shù)據(jù)源綁定實(shí)例代碼

    ASP.NET實(shí)現(xiàn)TreeView的XML數(shù)據(jù)源綁定實(shí)例代碼

    這篇文章介紹了ASP.NET實(shí)現(xiàn)TreeView的XML數(shù)據(jù)源綁定實(shí)例代碼,有需要的朋友可以參考一下
    2013-11-11

最新評(píng)論