ASP.NET MVC第021天_Ajax Helper_AjaxOptions,AjaxExtensions,ActionLink,InsertionMode使用筆記part1

 

在.net webform開發時代往往只要提到ajax
很直覺會去聯想到的就是局部更新、updatepanel
和一些webform以前要比較細心留意asp.net ajax生命週期等等技術的關鍵字


在asp.net mvc 這塊則是需透過ajax helper來實踐
底層是透過jQuery來封裝的


首先我們新增好一個.net framework的 mvc5專案





預設要先從nuget補安裝好
跟ajax相關的jQuery
Microsoft.jQuery.Unobtrusive.Ajax
跟ajax驗證相關的jQuery
Microsoft.jQuery.Unobtrusive.Validation




至布局頁加上全域性ajax相關的 js引入
一定要比照此上下順序(因有前後依賴)

<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>




AjaxOptions的介紹
在asp.net MVC中要達成一些ajax設定主要就是透過此class

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
namespace System.Web.Mvc.Ajax
{
    //
    // 摘要:
    //     表示在 ASP.NET MVC 應用程式中執行 Ajax 指令碼的選項設定。
    public class AjaxOptions
    {
        //
        // 摘要:
        //     初始化 System.Web.Mvc.Ajax.AjaxOptions 類別的新執行個體。
        public AjaxOptions();

        //
        // 摘要:
        //     取得或設定在送出要求之前,要在確認視窗中顯示的訊息。
        //
        // 傳回:
        //     要在確認視窗中顯示的訊息。
        public string Confirm { get; set; }
        //
        // 摘要:
        //     取得或設定 HTTP 要求方法 ("Get" 或 "Post")。
        //
        // 傳回:
        //     HTTP 要求方法。預設值為 "Post"。
        public string HttpMethod { get; set; }
        //
        // 摘要:
        //     取得或設定模式,這個模式會指定如何將回應插入至目標 DOM 項目中。
        //
        // 傳回:
        //     插入模式 ("InsertAfter"、"InsertBefore" 或 "Replace")。預設值為 "Replace"。
        public InsertionMode InsertionMode { get; set; }
        //
        // 摘要:
        //     取得或設定值 (以毫秒為單位),在顯示或隱藏正載入的項目時,這個值會控制動畫的持續時間。
        //
        // 傳回:
        //     值 (以毫秒為單位),在顯示或隱藏正載入的項目時,這個值會控制動畫的持續時間。
        public int LoadingElementDuration { get; set; }
        //
        // 摘要:
        //     取得或設定載入 Ajax 函式時所顯示之 HTML 項目的 id 屬性。
        //
        // 傳回:
        //     載入 Ajax 函式時所顯示之項目的 ID。
        public string LoadingElementId { get; set; }
        //
        // 摘要:
        //     取得或設定更新頁面之前所要立即呼叫之 JavaScript 函式的名稱。
        //
        // 傳回:
        //     更新頁面之前所要立即呼叫之 JavaScript 函式的名稱。
        public string OnBegin { get; set; }
        //
        // 摘要:
        //     取得或設定在已執行個體化回應資料但尚未更新頁面之前所要呼叫的 JavaScript 函式。
        //
        // 傳回:
        //     已執行個體化回應資料時所要呼叫的 JavaScript 函式。
        public string OnComplete { get; set; }
        //
        // 摘要:
        //     取得或設定頁面更新失敗時所要呼叫的 JavaScript 函式。
        //
        // 傳回:
        //     頁面更新失敗時所要呼叫的 JavaScript 函式。
        public string OnFailure { get; set; }
        //
        // 摘要:
        //     取得或設定成功更新頁面之後所要呼叫的 JavaScript 函式。
        //
        // 傳回:
        //     成功更新頁面之後所要呼叫的 JavaScript 函式。
        public string OnSuccess { get; set; }
        //
        // 摘要:
        //     使用來自伺服器的回應取得或設定要更新之 DOM 項目的 ID。
        //
        // 傳回:
        //     要更新之 DOM 項目的 ID。
        public string UpdateTargetId { get; set; }
        //
        // 摘要:
        //     取得或設定要對其提出要求的 URL。
        //
        // 傳回:
        //     要對其提出要求的 URL。
        public string Url { get; set; }
        public bool AllowCache { get; set; }

        //
        // 摘要:
        //     以 HTML 屬性集合形式傳回 Ajax 選項以支援非干擾性的 JavaScript。
        //
        // 傳回:
        //     Ajax 選項,其形式為 HTML 屬性集合以支援不顯眼的 JavaScript。
        public IDictionary<string, object> ToUnobtrusiveHtmlAttributes();
    }
}


Confirm用來做提交前確認的跳窗

HttpMethod則可以設定要用GET或POST

InsertionMode則代表要安插DOM元素時候的模式要採用
像是InsertAfter , InsertBefore 或者Replace等 (預設為Replace)

LoadingElementDuration 則以毫秒為單位來做特定某個值的設置或存取加載元素的動畫持續時間

LoadingElementId 則是獲取和設置加載過程中要顯示的HTML元素 id

OnBegin :發生在響應之前立即會執行的js 函數

OnComplete : 發生在響應完成之後會執行的js 函數

OnFailure : 發生在響應失敗會執行的js 函數

OnSuccess : 發生在響應成功會執行的js 函數

UpdateTargetId: 則代表目標要更新的DOM元素ID

Url 代表發出請求的位置

AllowCache 是否允許緩存


AjaxExtensions的介紹

主要包含如下四種extension method的封裝
ActionLink
BeginForm
BeginRouteForm
RouteLink
以下是微軟的封裝結構

   1
   2
   3
   4
   5
   6
   7
   8
   9
  10
  11
  12
  13
  14
  15
  16
  17
  18
  19
  20
  21
  22
  23
  24
  25
  26
  27
  28
  29
  30
  31
  32
  33
  34
  35
  36
  37
  38
  39
  40
  41
  42
  43
  44
  45
  46
  47
  48
  49
  50
  51
  52
  53
  54
  55
  56
  57
  58
  59
  60
  61
  62
  63
  64
  65
  66
  67
  68
  69
  70
  71
  72
  73
  74
  75
  76
  77
  78
  79
  80
  81
  82
  83
  84
  85
  86
  87
  88
  89
  90
  91
  92
  93
  94
  95
  96
  97
  98
  99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 184
 185
 186
 187
 188
 189
 190
 191
 192
 193
 194
 195
 196
 197
 198
 199
 200
 201
 202
 203
 204
 205
 206
 207
 208
 209
 210
 211
 212
 213
 214
 215
 216
 217
 218
 219
 220
 221
 222
 223
 224
 225
 226
 227
 228
 229
 230
 231
 232
 233
 234
 235
 236
 237
 238
 239
 240
 241
 242
 243
 244
 245
 246
 247
 248
 249
 250
 251
 252
 253
 254
 255
 256
 257
 258
 259
 260
 261
 262
 263
 264
 265
 266
 267
 268
 269
 270
 271
 272
 273
 274
 275
 276
 277
 278
 279
 280
 281
 282
 283
 284
 285
 286
 287
 288
 289
 290
 291
 292
 293
 294
 295
 296
 297
 298
 299
 300
 301
 302
 303
 304
 305
 306
 307
 308
 309
 310
 311
 312
 313
 314
 315
 316
 317
 318
 319
 320
 321
 322
 323
 324
 325
 326
 327
 328
 329
 330
 331
 332
 333
 334
 335
 336
 337
 338
 339
 340
 341
 342
 343
 344
 345
 346
 347
 348
 349
 350
 351
 352
 353
 354
 355
 356
 357
 358
 359
 360
 361
 362
 363
 364
 365
 366
 367
 368
 369
 370
 371
 372
 373
 374
 375
 376
 377
 378
 379
 380
 381
 382
 383
 384
 385
 386
 387
 388
 389
 390
 391
 392
 393
 394
 395
 396
 397
 398
 399
 400
 401
 402
 403
 404
 405
 406
 407
 408
 409
 410
 411
 412
 413
 414
 415
 416
 417
 418
 419
 420
 421
 422
 423
 424
 425
 426
 427
 428
 429
 430
 431
 432
 433
 434
 435
 436
 437
 438
 439
 440
 441
 442
 443
 444
 445
 446
 447
 448
 449
 450
 451
 452
 453
 454
 455
 456
 457
 458
 459
 460
 461
 462
 463
 464
 465
 466
 467
 468
 469
 470
 471
 472
 473
 474
 475
 476
 477
 478
 479
 480
 481
 482
 483
 484
 485
 486
 487
 488
 489
 490
 491
 492
 493
 494
 495
 496
 497
 498
 499
 500
 501
 502
 503
 504
 505
 506
 507
 508
 509
 510
 511
 512
 513
 514
 515
 516
 517
 518
 519
 520
 521
 522
 523
 524
 525
 526
 527
 528
 529
 530
 531
 532
 533
 534
 535
 536
 537
 538
 539
 540
 541
 542
 543
 544
 545
 546
 547
 548
 549
 550
 551
 552
 553
 554
 555
 556
 557
 558
 559
 560
 561
 562
 563
 564
 565
 566
 567
 568
 569
 570
 571
 572
 573
 574
 575
 576
 577
 578
 579
 580
 581
 582
 583
 584
 585
 586
 587
 588
 589
 590
 591
 592
 593
 594
 595
 596
 597
 598
 599
 600
 601
 602
 603
 604
 605
 606
 607
 608
 609
 610
 611
 612
 613
 614
 615
 616
 617
 618
 619
 620
 621
 622
 623
 624
 625
 626
 627
 628
 629
 630
 631
 632
 633
 634
 635
 636
 637
 638
 639
 640
 641
 642
 643
 644
 645
 646
 647
 648
 649
 650
 651
 652
 653
 654
 655
 656
 657
 658
 659
 660
 661
 662
 663
 664
 665
 666
 667
 668
 669
 670
 671
 672
 673
 674
 675
 676
 677
 678
 679
 680
 681
 682
 683
 684
 685
 686
 687
 688
 689
 690
 691
 692
 693
 694
 695
 696
 697
 698
 699
 700
 701
 702
 703
 704
 705
 706
 707
 708
 709
 710
 711
 712
 713
 714
 715
 716
 717
 718
 719
 720
 721
 722
 723
 724
 725
 726
 727
 728
 729
 730
 731
 732
 733
 734
 735
 736
 737
 738
 739
 740
 741
 742
 743
 744
 745
 746
 747
 748
 749
 750
 751
 752
 753
 754
 755
 756
 757
 758
 759
 760
 761
 762
 763
 764
 765
 766
 767
 768
 769
 770
 771
 772
 773
 774
 775
 776
 777
 778
 779
 780
 781
 782
 783
 784
 785
 786
 787
 788
 789
 790
 791
 792
 793
 794
 795
 796
 797
 798
 799
 800
 801
 802
 803
 804
 805
 806
 807
 808
 809
 810
 811
 812
 813
 814
 815
 816
 817
 818
 819
 820
 821
 822
 823
 824
 825
 826
 827
 828
 829
 830
 831
 832
 833
 834
 835
 836
 837
 838
 839
 840
 841
 842
 843
 844
 845
 846
 847
 848
 849
 850
 851
 852
 853
 854
 855
 856
 857
 858
 859
 860
 861
 862
 863
 864
 865
 866
 867
 868
 869
 870
 871
 872
 873
 874
 875
 876
 877
 878
 879
 880
 881
 882
 883
 884
 885
 886
 887
 888
 889
 890
 891
 892
 893
 894
 895
 896
 897
 898
 899
 900
 901
 902
 903
 904
 905
 906
 907
 908
 909
 910
 911
 912
 913
 914
 915
 916
 917
 918
 919
 920
 921
 922
 923
 924
 925
 926
 927
 928
 929
 930
 931
 932
 933
 934
 935
 936
 937
 938
 939
 940
 941
 942
 943
 944
 945
 946
 947
 948
 949
 950
 951
 952
 953
 954
 955
 956
 957
 958
 959
 960
 961
 962
 963
 964
 965
 966
 967
 968
 969
 970
 971
 972
 973
 974
 975
 976
 977
 978
 979
 980
 981
 982
 983
 984
 985
 986
 987
 988
 989
 990
 991
 992
 993
 994
 995
 996
 997
 998
 999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
namespace System.Web.Mvc.Ajax
{
    //
    // 摘要:
    //     表示 ASP.NET MVC 應用程式內對 ASP.NET AJAX 的支援。
    public static class AjaxExtensions
    {
        //
        // 摘要:
        //     傳回錨定項目,其中包含指定之動作方法的 URL;按一下動作連結時,系統便會使用 JavaScript 以非同步方式叫用該動作方法。
        //
        // 參數:
        //   ajaxHelper:
        //     AJAX Helper。
        //
        //   linkText:
        //     錨定項目的內部文字。
        //
        //   actionName:
        //     動作方法的名稱。
        //
        //   ajaxOptions:
        //     物件,提供非同步要求的選項。
        //
        // 傳回:
        //     錨定項目。
        //
        // 例外狀況:
        //   T:System.ArgumentException:
        //     linkText 參數是 null 或空白。
        public static MvcHtmlString ActionLink(this AjaxHelper ajaxHelper, string linkText, string actionName, AjaxOptions ajaxOptions);
        //
        // 摘要:
        //     傳回錨定項目,其中包含指定之動作方法的 URL;按一下動作連結時,系統便會使用 JavaScript 以非同步方式叫用該動作方法。
        //
        // 參數:
        //   ajaxHelper:
        //     AJAX Helper。
        //
        //   linkText:
        //     錨定項目的內部文字。
        //
        //   actionName:
        //     動作方法的名稱。
        //
        //   controllerName:
        //     控制器的名稱。
        //
        //   protocol:
        //     URL 的通訊協定,例如 "http" 或 "https"。
        //
        //   hostName:
        //     URL 的主機名稱。
        //
        //   fragment:
        //     URL 片段名稱 (錨定名稱)。
        //
        //   routeValues:
        //     包含路徑參數的物件。
        //
        //   ajaxOptions:
        //     物件,提供非同步要求的選項。
        //
        //   htmlAttributes:
        //     物件,包含要針對項目設定的 HTML 屬性。
        //
        // 傳回:
        //     錨定項目。
        //
        // 例外狀況:
        //   T:System.ArgumentException:
        //     linkText 參數是 null 或空白。
        public static MvcHtmlString ActionLink(this AjaxHelper ajaxHelper, string linkText, string actionName, string controllerName, string protocol, string hostName, string fragment, RouteValueDictionary routeValues, AjaxOptions ajaxOptions, IDictionary<string, object> htmlAttributes);
        //
        // 摘要:
        //     傳回錨定項目,其中包含指定之動作方法的 URL;按一下動作連結時,系統便會使用 JavaScript 以非同步方式叫用該動作方法。
        //
        // 參數:
        //   ajaxHelper:
        //     AJAX Helper。
        //
        //   linkText:
        //     錨定項目的內部文字。
        //
        //   actionName:
        //     動作方法的名稱。
        //
        //   controllerName:
        //     控制器的名稱。
        //
        //   protocol:
        //     URL 的通訊協定,例如 "http" 或 "https"。
        //
        //   hostName:
        //     URL 的主機名稱。
        //
        //   fragment:
        //     URL 片段名稱 (錨定名稱)。
        //
        //   routeValues:
        //     包含路徑參數的物件。這些參數是藉由檢查物件之屬性,透過反映所擷取而來。此物件通常是使用物件初始設定式語法來建立。
        //
        //   ajaxOptions:
        //     物件,提供非同步要求的選項。
        //
        //   htmlAttributes:
        //     物件,包含要針對項目設定的 HTML 屬性。
        //
        // 傳回:
        //     錨定項目。
        //
        // 例外狀況:
        //   T:System.ArgumentException:
        //     linkText 參數是 null 或空白。
        public static MvcHtmlString ActionLink(this AjaxHelper ajaxHelper, string linkText, string actionName, string controllerName, string protocol, string hostName, string fragment, object routeValues, AjaxOptions ajaxOptions, object htmlAttributes);
        //
        // 摘要:
        //     傳回錨定項目,其中包含指定之動作方法的 URL;按一下動作連結時,系統便會使用 JavaScript 以非同步方式叫用該動作方法。
        //
        // 參數:
        //   ajaxHelper:
        //     AJAX Helper。
        //
        //   linkText:
        //     錨定項目的內部文字。
        //
        //   actionName:
        //     動作方法的名稱。
        //
        //   controllerName:
        //     控制器的名稱。
        //
        //   routeValues:
        //     包含路徑參數的物件。
        //
        //   ajaxOptions:
        //     物件,提供非同步要求的選項。
        //
        //   htmlAttributes:
        //     物件,包含要針對項目設定的 HTML 屬性。
        //
        // 傳回:
        //     錨定項目。
        //
        // 例外狀況:
        //   T:System.ArgumentException:
        //     linkText 參數是 null 或空白。
        public static MvcHtmlString ActionLink(this AjaxHelper ajaxHelper, string linkText, string actionName, string controllerName, RouteValueDictionary routeValues, AjaxOptions ajaxOptions, IDictionary<string, object> htmlAttributes);
        //
        // 摘要:
        //     傳回錨定項目,其中包含指定之動作方法的 URL;按一下動作連結時,系統便會使用 JavaScript 以非同步方式叫用該動作方法。
        //
        // 參數:
        //   ajaxHelper:
        //     AJAX Helper。
        //
        //   linkText:
        //     錨定項目的內部文字。
        //
        //   actionName:
        //     動作方法的名稱。
        //
        //   controllerName:
        //     控制器的名稱。
        //
        //   routeValues:
        //     包含路徑參數的物件。這些參數是藉由檢查物件之屬性,透過反映所擷取而來。此物件通常是使用物件初始設定式語法來建立。
        //
        //   ajaxOptions:
        //     物件,提供非同步要求的選項。
        //
        //   htmlAttributes:
        //     物件,包含要針對項目設定的 HTML 屬性。
        //
        // 傳回:
        //     錨定項目。
        //
        // 例外狀況:
        //   T:System.ArgumentException:
        //     linkText 參數是 null 或空白。
        public static MvcHtmlString ActionLink(this AjaxHelper ajaxHelper, string linkText, string actionName, string controllerName, object routeValues, AjaxOptions ajaxOptions, object htmlAttributes);
        //
        // 摘要:
        //     傳回錨定項目,其中包含指定之動作方法的 URL;按一下動作連結時,系統便會使用 JavaScript 以非同步方式叫用該動作方法。
        //
        // 參數:
        //   ajaxHelper:
        //     AJAX Helper。
        //
        //   linkText:
        //     錨定項目的內部文字。
        //
        //   actionName:
        //     動作方法的名稱。
        //
        //   controllerName:
        //     控制器的名稱。
        //
        //   routeValues:
        //     包含路徑參數的物件。這些參數是藉由檢查物件之屬性,透過反映所擷取而來。此物件通常是使用物件初始設定式語法來建立。
        //
        //   ajaxOptions:
        //     物件,提供非同步要求的選項。
        //
        // 傳回:
        //     錨定項目。
        //
        // 例外狀況:
        //   T:System.ArgumentException:
        //     linkText 參數是 null 或空白。
        public static MvcHtmlString ActionLink(this AjaxHelper ajaxHelper, string linkText, string actionName, string controllerName, object routeValues, AjaxOptions ajaxOptions);
        //
        // 摘要:
        //     傳回錨定項目,其中包含指定之動作方法的 URL;按一下動作連結時,系統便會使用 JavaScript 以非同步方式叫用該動作方法。
        //
        // 參數:
        //   ajaxHelper:
        //     AJAX Helper。
        //
        //   linkText:
        //     錨定項目的內部文字。
        //
        //   actionName:
        //     動作方法的名稱。
        //
        //   controllerName:
        //     控制器的名稱。
        //
        //   routeValues:
        //     包含路徑參數的物件。
        //
        //   ajaxOptions:
        //     物件,提供非同步要求的選項。
        //
        // 傳回:
        //     錨定項目。
        //
        // 例外狀況:
        //   T:System.ArgumentException:
        //     linkText 參數是 null 或空白。
        public static MvcHtmlString ActionLink(this AjaxHelper ajaxHelper, string linkText, string actionName, string controllerName, RouteValueDictionary routeValues, AjaxOptions ajaxOptions);
        //
        // 摘要:
        //     傳回錨定項目,其中包含指定之動作方法的 URL;按一下動作連結時,系統便會使用 JavaScript 以非同步方式叫用該動作方法。
        //
        // 參數:
        //   ajaxHelper:
        //     AJAX Helper。
        //
        //   linkText:
        //     錨定項目的內部文字。
        //
        //   actionName:
        //     動作方法的名稱。
        //
        //   routeValues:
        //     包含路徑參數的物件。
        //
        //   ajaxOptions:
        //     物件,提供非同步要求的選項。
        //
        //   htmlAttributes:
        //     物件,包含要針對項目設定的 HTML 屬性。
        //
        // 傳回:
        //     錨定項目。
        //
        // 例外狀況:
        //   T:System.ArgumentException:
        //     linkText 參數是 null 或空白。
        public static MvcHtmlString ActionLink(this AjaxHelper ajaxHelper, string linkText, string actionName, RouteValueDictionary routeValues, AjaxOptions ajaxOptions, IDictionary<string, object> htmlAttributes);
        //
        // 摘要:
        //     傳回錨定項目,其中包含指定之動作方法的 URL;按一下動作連結時,系統便會使用 JavaScript 以非同步方式叫用該動作方法。
        //
        // 參數:
        //   ajaxHelper:
        //     AJAX Helper。
        //
        //   linkText:
        //     錨定項目的內部文字。
        //
        //   actionName:
        //     動作方法的名稱。
        //
        //   routeValues:
        //     包含路徑參數的物件。
        //
        //   ajaxOptions:
        //     物件,提供非同步要求的選項。
        //
        // 傳回:
        //     錨定項目。
        //
        // 例外狀況:
        //   T:System.ArgumentException:
        //     linkText 參數是 null 或空白。
        public static MvcHtmlString ActionLink(this AjaxHelper ajaxHelper, string linkText, string actionName, RouteValueDictionary routeValues, AjaxOptions ajaxOptions);
        //
        // 摘要:
        //     傳回錨定項目,其中包含指定之動作方法的 URL;按一下動作連結時,系統便會使用 JavaScript 以非同步方式叫用該動作方法。
        //
        // 參數:
        //   ajaxHelper:
        //     AJAX Helper。
        //
        //   linkText:
        //     錨定項目的內部文字。
        //
        //   actionName:
        //     動作方法的名稱。
        //
        //   routeValues:
        //     包含路徑參數的物件。這些參數是藉由檢查物件之屬性,透過反映所擷取而來。此物件通常是使用物件初始設定式語法來建立。
        //
        //   ajaxOptions:
        //     物件,提供非同步要求的選項。
        //
        //   htmlAttributes:
        //     物件,包含要針對項目設定的 HTML 屬性。
        //
        // 傳回:
        //     錨定項目。
        //
        // 例外狀況:
        //   T:System.ArgumentException:
        //     linkText 參數是 null 或空白。
        public static MvcHtmlString ActionLink(this AjaxHelper ajaxHelper, string linkText, string actionName, object routeValues, AjaxOptions ajaxOptions, object htmlAttributes);
        //
        // 摘要:
        //     傳回錨定項目,其中包含指定之動作方法的 URL;按一下動作連結時,系統便會使用 JavaScript 以非同步方式叫用該動作方法。
        //
        // 參數:
        //   ajaxHelper:
        //     AJAX Helper。
        //
        //   linkText:
        //     錨定項目的內部文字。
        //
        //   actionName:
        //     動作方法的名稱。
        //
        //   routeValues:
        //     包含路徑參數的物件。這些參數是藉由檢查物件之屬性,透過反映所擷取而來。此物件通常是使用物件初始設定式語法來建立。
        //
        //   ajaxOptions:
        //     物件,提供非同步要求的選項。
        //
        // 傳回:
        //     錨定項目。
        //
        // 例外狀況:
        //   T:System.ArgumentException:
        //     linkText 參數是 null 或空白。
        public static MvcHtmlString ActionLink(this AjaxHelper ajaxHelper, string linkText, string actionName, object routeValues, AjaxOptions ajaxOptions);
        //
        // 摘要:
        //     傳回錨定項目,其中包含指定之動作方法的 URL;按一下動作連結時,系統便會使用 JavaScript 以非同步方式叫用該動作方法。
        //
        // 參數:
        //   ajaxHelper:
        //     AJAX Helper。
        //
        //   linkText:
        //     錨定項目的內部文字。
        //
        //   actionName:
        //     動作方法的名稱。
        //
        //   controllerName:
        //     控制器的名稱。
        //
        //   ajaxOptions:
        //     物件,提供非同步要求的選項。
        //
        // 傳回:
        //     錨定項目。
        //
        // 例外狀況:
        //   T:System.ArgumentException:
        //     linkText 參數是 null 或空白。
        public static MvcHtmlString ActionLink(this AjaxHelper ajaxHelper, string linkText, string actionName, string controllerName, AjaxOptions ajaxOptions);
        //
        // 摘要:
        //     將開頭的 <form> 標記寫入至回應。
        //
        // 參數:
        //   ajaxHelper:
        //     AJAX Helper。
        //
        //   actionName:
        //     處理要求之動作方法的名稱。
        //
        //   controllerName:
        //     控制器的名稱。
        //
        //   ajaxOptions:
        //     物件,提供非同步要求的選項。
        //
        // 傳回:
        //     開頭的 <form> 標記。
        public static MvcForm BeginForm(this AjaxHelper ajaxHelper, string actionName, string controllerName, AjaxOptions ajaxOptions);
        //
        // 摘要:
        //     將開頭的 <form> 標記寫入至回應。
        //
        // 參數:
        //   ajaxHelper:
        //     AJAX Helper。
        //
        //   actionName:
        //     處理要求之動作方法的名稱。
        //
        //   controllerName:
        //     控制器的名稱。
        //
        //   routeValues:
        //     包含路徑參數的物件。
        //
        //   ajaxOptions:
        //     物件,提供非同步要求的選項。
        //
        //   htmlAttributes:
        //     物件,包含要針對項目設定的 HTML 屬性。
        //
        // 傳回:
        //     開頭的 <form> 標記。
        public static MvcForm BeginForm(this AjaxHelper ajaxHelper, string actionName, string controllerName, RouteValueDictionary routeValues, AjaxOptions ajaxOptions, IDictionary<string, object> htmlAttributes);
        //
        // 摘要:
        //     將開頭的 <form> 標記寫入至回應。
        //
        // 參數:
        //   ajaxHelper:
        //     AJAX Helper。
        //
        //   actionName:
        //     處理要求之動作方法的名稱。
        //
        //   controllerName:
        //     控制器的名稱。
        //
        //   routeValues:
        //     包含路徑參數的物件。
        //
        //   ajaxOptions:
        //     物件,提供非同步要求的選項。
        //
        // 傳回:
        //     開頭的 <form> 標記。
        public static MvcForm BeginForm(this AjaxHelper ajaxHelper, string actionName, string controllerName, RouteValueDictionary routeValues, AjaxOptions ajaxOptions);
        //
        // 摘要:
        //     將開頭的 <form> 標記寫入至回應。
        //
        // 參數:
        //   ajaxHelper:
        //     AJAX Helper。
        //
        //   actionName:
        //     處理要求之動作方法的名稱。
        //
        //   controllerName:
        //     控制器的名稱。
        //
        //   routeValues:
        //     包含路徑參數的物件。這些參數是藉由檢查物件之屬性,透過反映所擷取而來。此物件通常是使用物件初始設定式語法來建立。
        //
        //   ajaxOptions:
        //     物件,提供非同步要求的選項。
        //
        // 傳回:
        //     開頭的 <form> 標記。
        public static MvcForm BeginForm(this AjaxHelper ajaxHelper, string actionName, string controllerName, object routeValues, AjaxOptions ajaxOptions);
        //
        // 摘要:
        //     將開頭的 <form> 標記寫入至回應。
        //
        // 參數:
        //   ajaxHelper:
        //     AJAX Helper。
        //
        //   actionName:
        //     處理要求之動作方法的名稱。
        //
        //   routeValues:
        //     包含路徑參數的物件。
        //
        //   ajaxOptions:
        //     物件,提供非同步要求的選項。
        //
        //   htmlAttributes:
        //     一項物件,該物件包含要針對項目設定的 HTML 屬性。
        //
        // 傳回:
        //     開頭的 <form> 標記。
        public static MvcForm BeginForm(this AjaxHelper ajaxHelper, string actionName, RouteValueDictionary routeValues, AjaxOptions ajaxOptions, IDictionary<string, object> htmlAttributes);
        //
        // 摘要:
        //     將開頭的 <form> 標記寫入至回應。
        //
        // 參數:
        //   ajaxHelper:
        //     AJAX Helper。
        //
        //   actionName:
        //     處理要求之動作方法的名稱。
        //
        //   controllerName:
        //     控制器的名稱。
        //
        //   routeValues:
        //     包含路徑參數的物件。這些參數是藉由檢查物件之屬性,透過反映所擷取而來。此物件通常是使用物件初始設定式語法來建立。
        //
        //   ajaxOptions:
        //     物件,提供非同步要求的選項。
        //
        //   htmlAttributes:
        //     物件,包含要針對項目設定的 HTML 屬性。
        //
        // 傳回:
        //     開頭的 <form> 標記。
        public static MvcForm BeginForm(this AjaxHelper ajaxHelper, string actionName, string controllerName, object routeValues, AjaxOptions ajaxOptions, object htmlAttributes);
        //
        // 摘要:
        //     將開頭的 <form> 標記寫入至回應。
        //
        // 參數:
        //   ajaxHelper:
        //     AJAX Helper。
        //
        //   actionName:
        //     處理要求之動作方法的名稱。
        //
        //   routeValues:
        //     包含路徑參數的物件。這些參數是藉由檢查物件之屬性,透過反映所擷取而來。此物件通常是使用物件初始設定式語法來建立。
        //
        //   ajaxOptions:
        //     物件,提供非同步要求的選項。
        //
        //   htmlAttributes:
        //     物件,包含要針對項目設定的 HTML 屬性。
        //
        // 傳回:
        //     開頭的 <form> 標記。
        public static MvcForm BeginForm(this AjaxHelper ajaxHelper, string actionName, object routeValues, AjaxOptions ajaxOptions, object htmlAttributes);
        //
        // 摘要:
        //     將開頭的 <form> 標記寫入至回應。
        //
        // 參數:
        //   ajaxHelper:
        //     AJAX Helper。
        //
        //   actionName:
        //     處理要求之動作方法的名稱。
        //
        //   routeValues:
        //     包含路徑參數的物件。這些參數是藉由檢查物件之屬性,透過反映所擷取而來。此物件通常是使用物件初始設定式語法來建立。
        //
        //   ajaxOptions:
        //     物件,提供非同步要求的選項。
        //
        // 傳回:
        //     開頭的 <form> 標記。
        public static MvcForm BeginForm(this AjaxHelper ajaxHelper, string actionName, object routeValues, AjaxOptions ajaxOptions);
        //
        // 摘要:
        //     將開頭的 <form> 標記寫入至回應。
        //
        // 參數:
        //   ajaxHelper:
        //     AJAX Helper。
        //
        //   actionName:
        //     處理要求之動作方法的名稱。
        //
        //   routeValues:
        //     包含路徑參數的物件。
        //
        //   ajaxOptions:
        //     物件,提供非同步要求的選項。
        //
        // 傳回:
        //     開頭的 <form> 標記。
        public static MvcForm BeginForm(this AjaxHelper ajaxHelper, string actionName, RouteValueDictionary routeValues, AjaxOptions ajaxOptions);
        //
        // 摘要:
        //     將開頭的 <form> 標記寫入至回應。
        //
        // 參數:
        //   ajaxHelper:
        //     AJAX Helper。
        //
        //   actionName:
        //     處理要求之動作方法的名稱。
        //
        //   ajaxOptions:
        //     物件,提供非同步要求的選項。
        //
        // 傳回:
        //     開頭的 <form> 標記。
        public static MvcForm BeginForm(this AjaxHelper ajaxHelper, string actionName, AjaxOptions ajaxOptions);
        //
        // 摘要:
        //     將開頭的 <form> 標記寫入至回應。
        //
        // 參數:
        //   ajaxHelper:
        //     AJAX Helper。
        //
        //   ajaxOptions:
        //     物件,提供非同步要求的選項。
        //
        // 傳回:
        //     開頭的 <form> 標記。
        public static MvcForm BeginForm(this AjaxHelper ajaxHelper, AjaxOptions ajaxOptions);
        //
        // 摘要:
        //     使用指定的路由資訊,將開頭的 <form> 標記寫入至回應。
        //
        // 參數:
        //   ajaxHelper:
        //     AJAX Helper。
        //
        //   routeName:
        //     用來取得表單張貼 URL 之路徑的名稱。
        //
        //   ajaxOptions:
        //     物件,提供非同步要求的選項。
        //
        // 傳回:
        //     開頭的 <form> 標記。
        public static MvcForm BeginRouteForm(this AjaxHelper ajaxHelper, string routeName, AjaxOptions ajaxOptions);
        //
        // 摘要:
        //     使用指定的路由資訊,將開頭的 <form> 標記寫入至回應。
        //
        // 參數:
        //   ajaxHelper:
        //     AJAX Helper。
        //
        //   routeName:
        //     用來取得表單張貼 URL 之路徑的名稱。
        //
        //   routeValues:
        //     包含路徑參數的物件。這些參數是藉由檢查物件之屬性,透過反映所擷取而來。此物件通常是使用物件初始設定式語法來建立。
        //
        //   ajaxOptions:
        //     物件,提供非同步要求的選項。
        //
        // 傳回:
        //     開頭的 <form> 標記。
        public static MvcForm BeginRouteForm(this AjaxHelper ajaxHelper, string routeName, object routeValues, AjaxOptions ajaxOptions);
        //
        // 摘要:
        //     使用指定的路由資訊,將開頭的 <form> 標記寫入至回應。
        //
        // 參數:
        //   ajaxHelper:
        //     AJAX Helper。
        //
        //   routeName:
        //     用來取得表單張貼 URL 之路徑的名稱。
        //
        //   routeValues:
        //     包含路徑參數的物件。這些參數是藉由檢查物件之屬性,透過反映所擷取而來。此物件通常是使用物件初始設定式語法來建立。
        //
        //   ajaxOptions:
        //     物件,提供非同步要求的選項。
        //
        //   htmlAttributes:
        //     物件,包含要針對項目設定的 HTML 屬性。
        //
        // 傳回:
        //     開頭的 <form> 標記。
        public static MvcForm BeginRouteForm(this AjaxHelper ajaxHelper, string routeName, object routeValues, AjaxOptions ajaxOptions, object htmlAttributes);
        //
        // 摘要:
        //     使用指定的路由資訊,將開頭的 <form> 標記寫入至回應。
        //
        // 參數:
        //   ajaxHelper:
        //     AJAX Helper。
        //
        //   routeName:
        //     用來取得表單張貼 URL 之路徑的名稱。
        //
        //   routeValues:
        //     包含路徑參數的物件。
        //
        //   ajaxOptions:
        //     物件,提供非同步要求的選項。
        //
        // 傳回:
        //     開頭的 <form> 標記。
        public static MvcForm BeginRouteForm(this AjaxHelper ajaxHelper, string routeName, RouteValueDictionary routeValues, AjaxOptions ajaxOptions);
        //
        // 摘要:
        //     使用指定的路由資訊,將開頭的 <form> 標記寫入至回應。
        //
        // 參數:
        //   ajaxHelper:
        //     AJAX Helper。
        //
        //   routeName:
        //     用來取得表單張貼 URL 之路徑的名稱。
        //
        //   routeValues:
        //     包含路徑參數的物件。
        //
        //   ajaxOptions:
        //     物件,提供非同步要求的選項。
        //
        //   htmlAttributes:
        //     物件,包含要針對項目設定的 HTML 屬性。
        //
        // 傳回:
        //     開頭的 <form> 標記。
        public static MvcForm BeginRouteForm(this AjaxHelper ajaxHelper, string routeName, RouteValueDictionary routeValues, AjaxOptions ajaxOptions, IDictionary<string, object> htmlAttributes);
        //
        // 摘要:
        //     傳回 HTML script 項目,其中包含定義指定之文化特性資訊的全球化指令碼參考。
        //
        // 參數:
        //   ajaxHelper:
        //     此方法擴充的 AJAX Helper 物件。
        //
        //   cultureInfo:
        //     封裝目標文化特性的相關資訊,例如日期格式。
        //
        // 傳回:
        //     其 src 屬性設為全球化指令碼的 HTML script 項目,如下列程式碼範例所示:<script type="text/javascript" src="/MvcApplication1/Scripts/Globalization/en-US.js"></script>
        //
        // 例外狀況:
        //   T:System.ArgumentNullException:
        //     cultureInfo 參數是 null。
        public static MvcHtmlString GlobalizationScript(this AjaxHelper ajaxHelper, CultureInfo cultureInfo);
        //
        // 摘要:
        //     傳回 HTML script 項目,其中包含定義文化特性資訊的全球化指令碼參考。
        //
        // 參數:
        //   ajaxHelper:
        //     此方法擴充的 AJAX Helper 物件。
        //
        // 傳回:
        //     其 src 屬性設為全球化指令碼的 script 項目,如下列程式碼範例所示:<script type="text/javascript" src="/MvcApplication1/Scripts/Globalization/en-US.js"></script>
        public static MvcHtmlString GlobalizationScript(this AjaxHelper ajaxHelper);
        //
        // 摘要:
        //     傳回錨定項目,其中包含指定之路徑值的虛擬路徑;按一下連結時,系統便會使用 JavaScript 以非同步方式對該虛擬路徑提出要求。
        //
        // 參數:
        //   ajaxHelper:
        //     AJAX Helper。
        //
        //   linkText:
        //     錨定項目的內部文字。
        //
        //   routeName:
        //     用來取得表單張貼 URL 之路徑的名稱。
        //
        //   routeValues:
        //     包含路徑參數的物件。
        //
        //   ajaxOptions:
        //     物件,提供非同步要求的選項。
        //
        //   htmlAttributes:
        //     物件,包含要針對項目設定的 HTML 屬性。
        //
        // 傳回:
        //     錨定項目。
        //
        // 例外狀況:
        //   T:System.ArgumentException:
        //     linkText 參數是 null 或空白。
        public static MvcHtmlString RouteLink(this AjaxHelper ajaxHelper, string linkText, string routeName, RouteValueDictionary routeValues, AjaxOptions ajaxOptions, IDictionary<string, object> htmlAttributes);
        //
        // 摘要:
        //     傳回錨定項目,其中包含指定之路徑值的虛擬路徑;按一下連結時,系統便會使用 JavaScript 以非同步方式對該虛擬路徑提出要求。
        //
        // 參數:
        //   ajaxHelper:
        //     AJAX Helper。
        //
        //   linkText:
        //     錨定項目的內部文字。
        //
        //   routeValues:
        //     包含路徑參數的物件。這些參數是藉由檢查物件之屬性,透過反映所擷取而來。此物件通常是使用物件初始設定式語法來建立。
        //
        //   ajaxOptions:
        //     物件,提供非同步要求的選項。
        //
        // 傳回:
        //     錨定項目。
        //
        // 例外狀況:
        //   T:System.ArgumentException:
        //     linkText 參數是 null 或空白。
        public static MvcHtmlString RouteLink(this AjaxHelper ajaxHelper, string linkText, object routeValues, AjaxOptions ajaxOptions);
        //
        // 摘要:
        //     傳回錨定項目,其中包含指定之路徑值的虛擬路徑;按一下連結時,系統便會使用 JavaScript 以非同步方式對該虛擬路徑提出要求。
        //
        // 參數:
        //   ajaxHelper:
        //     AJAX Helper。
        //
        //   linkText:
        //     錨定項目的內部文字。
        //
        //   routeValues:
        //     包含路徑參數的物件。這些參數是藉由檢查物件之屬性,透過反映所擷取而來。此物件通常是使用物件初始設定式語法來建立。
        //
        //   ajaxOptions:
        //     物件,提供非同步要求的選項。
        //
        //   htmlAttributes:
        //     物件,包含要針對項目設定的 HTML 屬性。
        //
        // 傳回:
        //     錨定項目。
        //
        // 例外狀況:
        //   T:System.ArgumentException:
        //     linkText 參數是 null 或空白。
        public static MvcHtmlString RouteLink(this AjaxHelper ajaxHelper, string linkText, object routeValues, AjaxOptions ajaxOptions, object htmlAttributes);
        //
        // 摘要:
        //     傳回錨定項目,其中包含指定之路徑值的虛擬路徑;按一下連結時,系統便會使用 JavaScript 以非同步方式對該虛擬路徑提出要求。
        //
        // 參數:
        //   ajaxHelper:
        //     AJAX Helper。
        //
        //   linkText:
        //     錨定項目的內部文字。
        //
        //   routeValues:
        //     包含路徑參數的物件。
        //
        //   ajaxOptions:
        //     物件,提供非同步要求的選項。
        //
        // 傳回:
        //     錨定項目。
        //
        // 例外狀況:
        //   T:System.ArgumentException:
        //     linkText 參數是 null 或空白。
        public static MvcHtmlString RouteLink(this AjaxHelper ajaxHelper, string linkText, RouteValueDictionary routeValues, AjaxOptions ajaxOptions);
        //
        // 摘要:
        //     傳回錨定項目,其中包含指定之路徑值的虛擬路徑;按一下連結時,系統便會使用 JavaScript 以非同步方式對該虛擬路徑提出要求。
        //
        // 參數:
        //   ajaxHelper:
        //     AJAX Helper。
        //
        //   linkText:
        //     錨定項目的內部文字。
        //
        //   routeValues:
        //     包含路徑參數的物件。
        //
        //   ajaxOptions:
        //     物件,提供非同步要求的選項。
        //
        //   htmlAttributes:
        //     物件,包含要針對項目設定的 HTML 屬性。
        //
        // 傳回:
        //     錨定項目。
        //
        // 例外狀況:
        //   T:System.ArgumentException:
        //     linkText 參數是 null 或空白。
        public static MvcHtmlString RouteLink(this AjaxHelper ajaxHelper, string linkText, RouteValueDictionary routeValues, AjaxOptions ajaxOptions, IDictionary<string, object> htmlAttributes);
        //
        // 摘要:
        //     傳回錨定項目,其中包含指定之路徑值的虛擬路徑;按一下連結時,系統便會使用 JavaScript 以非同步方式對該虛擬路徑提出要求。
        //
        // 參數:
        //   ajaxHelper:
        //     AJAX Helper。
        //
        //   linkText:
        //     錨定項目的內部文字。
        //
        //   routeName:
        //     用來取得表單張貼 URL 之路徑的名稱。
        //
        //   ajaxOptions:
        //     物件,提供非同步要求的選項。
        //
        // 傳回:
        //     錨定項目。
        //
        // 例外狀況:
        //   T:System.ArgumentException:
        //     linkText 參數是 null 或空白。
        public static MvcHtmlString RouteLink(this AjaxHelper ajaxHelper, string linkText, string routeName, AjaxOptions ajaxOptions);
        //
        // 摘要:
        //     傳回錨定項目,其中包含指定之路徑值的虛擬路徑;按一下連結時,系統便會使用 JavaScript 以非同步方式對該虛擬路徑提出要求。
        //
        // 參數:
        //   ajaxHelper:
        //     AJAX Helper。
        //
        //   linkText:
        //     錨定項目的內部文字。
        //
        //   routeName:
        //     用來取得表單張貼 URL 之路徑的名稱。
        //
        //   ajaxOptions:
        //     物件,提供非同步要求的選項。
        //
        //   htmlAttributes:
        //     物件,包含要針對項目設定的 HTML 屬性。
        //
        // 傳回:
        //     錨定項目。
        //
        // 例外狀況:
        //   T:System.ArgumentException:
        //     linkText 參數是 null 或空白。
        public static MvcHtmlString RouteLink(this AjaxHelper ajaxHelper, string linkText, string routeName, AjaxOptions ajaxOptions, object htmlAttributes);
        //
        // 摘要:
        //     傳回錨定項目,其中包含指定之路徑值的虛擬路徑;按一下連結時,系統便會使用 JavaScript 以非同步方式對該虛擬路徑提出要求。
        //
        // 參數:
        //   ajaxHelper:
        //     AJAX Helper。
        //
        //   linkText:
        //     錨定項目的內部文字。
        //
        //   routeName:
        //     用來取得表單張貼 URL 之路徑的名稱。
        //
        //   ajaxOptions:
        //     物件,提供非同步要求的選項。
        //
        //   htmlAttributes:
        //     物件,包含要針對項目設定的 HTML 屬性。
        //
        // 傳回:
        //     錨定項目。
        //
        // 例外狀況:
        //   T:System.ArgumentException:
        //     linkText 參數是 null 或空白。
        public static MvcHtmlString RouteLink(this AjaxHelper ajaxHelper, string linkText, string routeName, AjaxOptions ajaxOptions, IDictionary<string, object> htmlAttributes);
        //
        // 摘要:
        //     傳回錨定項目,其中包含指定之路徑值的虛擬路徑;按一下連結時,系統便會使用 JavaScript 以非同步方式對該虛擬路徑提出要求。
        //
        // 參數:
        //   ajaxHelper:
        //     AJAX Helper。
        //
        //   linkText:
        //     錨定項目的內部文字。
        //
        //   routeName:
        //     用來取得表單張貼 URL 之路徑的名稱。
        //
        //   routeValues:
        //     包含路徑參數的物件。這些參數是藉由檢查物件之屬性,透過反映所擷取而來。此物件通常是使用物件初始設定式語法來建立。
        //
        //   ajaxOptions:
        //     物件,提供非同步要求的選項。
        //
        // 傳回:
        //     錨定項目。
        //
        // 例外狀況:
        //   T:System.ArgumentException:
        //     linkText 參數是 null 或空白。
        public static MvcHtmlString RouteLink(this AjaxHelper ajaxHelper, string linkText, string routeName, object routeValues, AjaxOptions ajaxOptions);
        //
        // 摘要:
        //     傳回錨定項目,其中包含指定之路徑值的虛擬路徑;按一下連結時,系統便會使用 JavaScript 以非同步方式對該虛擬路徑提出要求。
        //
        // 參數:
        //   ajaxHelper:
        //     AJAX Helper。
        //
        //   linkText:
        //     錨定項目的內部文字。
        //
        //   routeName:
        //     用來取得表單張貼 URL 之路徑的名稱。
        //
        //   routeValues:
        //     包含路徑參數的物件。這些參數是藉由檢查物件之屬性,透過反映所擷取而來。此物件通常是使用物件初始設定式語法來建立。
        //
        //   ajaxOptions:
        //     物件,提供非同步要求的選項。
        //
        //   htmlAttributes:
        //     物件,包含要針對項目設定的 HTML 屬性。
        //
        // 傳回:
        //     錨定項目。
        //
        // 例外狀況:
        //   T:System.ArgumentException:
        //     linkText 參數是 null 或空白。
        public static MvcHtmlString RouteLink(this AjaxHelper ajaxHelper, string linkText, string routeName, object routeValues, AjaxOptions ajaxOptions, object htmlAttributes);
        //
        // 摘要:
        //     傳回錨定項目,其中包含指定之路徑值的虛擬路徑;按一下連結時,系統便會使用 JavaScript 以非同步方式對該虛擬路徑提出要求。
        //
        // 參數:
        //   ajaxHelper:
        //     AJAX Helper。
        //
        //   linkText:
        //     錨定項目的內部文字。
        //
        //   routeName:
        //     用來取得表單張貼 URL 之路徑的名稱。
        //
        //   routeValues:
        //     包含路徑參數的物件。
        //
        //   ajaxOptions:
        //     物件,提供非同步要求的選項。
        //
        // 傳回:
        //     錨定項目。
        //
        // 例外狀況:
        //   T:System.ArgumentException:
        //     linkText 參數是 null 或空白。
        public static MvcHtmlString RouteLink(this AjaxHelper ajaxHelper, string linkText, string routeName, RouteValueDictionary routeValues, AjaxOptions ajaxOptions);
        //
        // 摘要:
        //     傳回錨定項目,其中包含指定之路徑值的虛擬路徑;按一下連結時,系統便會使用 JavaScript 以非同步方式對該虛擬路徑提出要求。
        //
        // 參數:
        //   ajaxHelper:
        //     AJAX Helper。
        //
        //   linkText:
        //     錨定項目的內部文字。
        //
        //   routeName:
        //     用來取得表單張貼 URL 之路徑的名稱。
        //
        //   protocol:
        //     URL 的通訊協定,例如 "http" 或 "https"。
        //
        //   hostName:
        //     URL 的主機名稱。
        //
        //   fragment:
        //     URL 片段名稱 (錨定名稱)。
        //
        //   routeValues:
        //     包含路徑參數的物件。
        //
        //   ajaxOptions:
        //     物件,提供非同步要求的選項。
        //
        //   htmlAttributes:
        //     物件,包含要針對項目設定的 HTML 屬性。
        //
        // 傳回:
        //     錨定項目。
        //
        // 例外狀況:
        //   T:System.ArgumentException:
        //     linkText 參數是 null 或空白。
        public static MvcHtmlString RouteLink(this AjaxHelper ajaxHelper, string linkText, string routeName, string protocol, string hostName, string fragment, RouteValueDictionary routeValues, AjaxOptions ajaxOptions, IDictionary<string, object> htmlAttributes);
    }
}




Ajax.ActionLink的使用
以ActionLink來說就有12種overload method
public static MvcHtmlString ActionLink(this AjaxHelper ajaxHelper, string linkText, string actionName, AjaxOptions ajaxOptions);
public static MvcHtmlString ActionLink(this AjaxHelper ajaxHelper, string linkText, string actionName, string controllerName, string protocol, string hostName, string fragment, RouteValueDictionary routeValues, AjaxOptions ajaxOptions, IDictionary<string, object> htmlAttributes);
public static MvcHtmlString ActionLink(this AjaxHelper ajaxHelper, string linkText, string actionName, string controllerName, string protocol, string hostName, string fragment, object routeValues, AjaxOptions ajaxOptions, object htmlAttributes);
public static MvcHtmlString ActionLink(this AjaxHelper ajaxHelper, string linkText, string actionName, string controllerName, RouteValueDictionary routeValues, AjaxOptions ajaxOptions, IDictionary<string, object> htmlAttributes);
public static MvcHtmlString ActionLink(this AjaxHelper ajaxHelper, string linkText, string actionName, string controllerName, object routeValues, AjaxOptions ajaxOptions, object htmlAttributes);
public static MvcHtmlString ActionLink(this AjaxHelper ajaxHelper, string linkText, string actionName, string controllerName, object routeValues, AjaxOptions ajaxOptions);
public static MvcHtmlString ActionLink(this AjaxHelper ajaxHelper, string linkText, string actionName, string controllerName, RouteValueDictionary routeValues, AjaxOptions ajaxOptions);
public static MvcHtmlString ActionLink(this AjaxHelper ajaxHelper, string linkText, string actionName, RouteValueDictionary routeValues, AjaxOptions ajaxOptions, IDictionary<string, object> htmlAttributes);
public static MvcHtmlString ActionLink(this AjaxHelper ajaxHelper, string linkText, string actionName, RouteValueDictionary routeValues, AjaxOptions ajaxOptions);
public static MvcHtmlString ActionLink(this AjaxHelper ajaxHelper, string linkText, string actionName, object routeValues, AjaxOptions ajaxOptions, object htmlAttributes);
public static MvcHtmlString ActionLink(this AjaxHelper ajaxHelper, string linkText, string actionName, object routeValues, AjaxOptions ajaxOptions);
public static MvcHtmlString ActionLink(this AjaxHelper ajaxHelper, string linkText, string actionName, string controllerName, AjaxOptions ajaxOptions);

這裡改寫Home控制器對應Index動作方法回傳的View
採用最基本的多載
public static MvcHtmlString ActionLink(this AjaxHelper ajaxHelper, string linkText, string actionName, AjaxOptions ajaxOptions);

在此要注意這裡的actionName指定必須是在當前controller之中

Index.cshtml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
@{
    ViewBag.Title = "Home Page";
}

<h2>Ajax  ActionLink 測試</h2>

<div>
    @Ajax.ActionLink("獲得目前時間", "GetCurrentDateTime", new AjaxOptions() { Confirm = "確定要獲取目前時間嗎?", InsertionMode = InsertionMode.Replace,UpdateTargetId="date" })
</div>

<div id="date">顯示時間內容</div>


在 HomeController中擴充GetCurrentDateTime的方法
用於回傳局部更新顯示在指定id的div內容
也就是當前時間

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MvcAjaxTestApp.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        public string GetCurrentDateTime()
        {
            return DateTime.Now.ToString();
        }


        public ActionResult About()
        {
            ViewBag.Message = "Your application description page.";

            return View();
        }

        public ActionResult Contact()
        {
            ViewBag.Message = "Your contact page.";

            return View();
        }
    }
}



在按下conifrm確定之後就可成功把資訊局部更新
InsertionMode介紹


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
namespace System.Web.Mvc.Ajax
{
    //
    // 摘要:
    //     列舉 AJAX 指令碼插入模式。
    public enum InsertionMode
    {
        //
        // 摘要:
        //     取代項目。
        Replace = 0,
        //
        // 摘要:
        //     在項目之前插入。
        InsertBefore = 1,
        //
        // 摘要:
        //     在項目之後插入。
        InsertAfter = 2,
        //
        // 摘要:
        //     取代整個項目。
        ReplaceWith = 3
    }
}

這裡我把InsertionMode調整改為別的

InsertAfter 
就會發現原本的文字內容保留後頭多串時間


InsertBefore 
就會發現原本的文字內容保留但跟After相反過來串在前面


而當你指定的是
ReplaceWith

則是會把整個div id = date的都取代掉



在AjaxOption中
比較常用的就是
LoadingElementId
LoadingElementDuration (By毫秒為單位)
通常會搭配使用

下圖就是兩秒時間加載的動畫
指定在 id 為 load的 div中做內容變更呈現




以實際應用可能是要先將該div隱藏加載開始先慢慢顯示直到結束再隱藏
所以預設通常可以把div設置為display none
加載動畫程式範本

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
@{
    ViewBag.Title = "Home Page";
}

<h2>Ajax  ActionLink 測試</h2>

<div>
    @Ajax.ActionLink("獲得目前時間", "GetCurrentDateTime", 
                    new AjaxOptions() { Confirm = "確定要獲取目前時間嗎?", 
                                        InsertionMode = InsertionMode.Replace,
                                        UpdateTargetId="date",
                                        LoadingElementId = "load",
                                        LoadingElementDuration = 2000})
</div>

<div id="date">顯示時間內容</div>
<div id="load" style="display:none" >加載中...</div>




其他還有像是
OnBegin
OnComplete

通常OnComplete幾乎都會跟局部更新完的時間點是同時出現的

在不需要等待情況下
由於跑的狀況會感覺OnBegin跟OnComplete幾乎同時出現沒差別
所以在GetCurrentDateTime方法中我們可以增加Thread.Sleep延遲個4秒
來觀察
HomeController

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MvcAjaxTestApp.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        public string GetCurrentDateTime()
        {
            System.Threading.Thread.Sleep(4000);
            return DateTime.Now.ToString();
        }
    }
}


Index View

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
@{
    ViewBag.Title = "Home Page";
}

<h2>Ajax  ActionLink 測試</h2>

<div>
    @Ajax.ActionLink("獲得目前時間", "GetCurrentDateTime", 
                    new AjaxOptions() { Confirm = "確定要獲取目前時間嗎?", 
                                        InsertionMode = InsertionMode.Replace,
                                        UpdateTargetId="date",
                                        LoadingElementId = "load",
                                        LoadingElementDuration = 1000,
                                        OnBegin="begin",
                                        OnComplete="complete"})
</div>

<div id="date">顯示時間內容</div>
<div id="begin_date"></div>
<div id="complete_date"></div>
<div id="load" style="display:none" >加載中...</div>

<script type="text/javascript">
    function GetCurrentDateTime() {
        var d = new Date(),
            str = '';
        str += d.getFullYear() + '年';
        str += d.getMonth() + 1 + '月'; //0~11
        str += d.getDate() + '日';
        str += d.getHours() + '時';
        str += d.getMinutes() + '分';
        str += d.getSeconds() + '秒';
        return str;
    }

    function begin() {
        $("#begin_date").text("OnBegin 最一開始執行" + GetCurrentDateTime());
    }
    function complete() {
        $("#complete_date").text("OnComplete 最後完成局部更新才開始執行" + GetCurrentDateTime());
    }
</script>

看一下效果





OnSuccess
OnFailure
則適用於判斷是否有成功執行ajax功能
這兩個的出現時機點跟OnComplete差不多


通常預設Ajax HttpMethod沒特別設定默認都會是GET
而我們action也是默認不太指定會採用GET但這裡我要讓他報錯
因此改為POST









最後較常有困惑的是AjaxOptions 的 Url
優先級別會比原本就在ActionLink指定的Action還要高

有指定AjaxOptions 的 Url
就會發現原先跑的Action被覆蓋了改走Url指定的method


沒指定AjaxOptions 的 Url













最後稍微補充routeValues
在其他overload method的參數中會看到 object routeValues
也就是URL後面要傳遞的參數(通常對應action method的參數名稱兩邊要一致)



當然也可以用另一個做設定
RouteValueDictionary routeValues
若資料較多組通常都會用這種Dictionary的key-value方式添加好一個物件再傳遞
而當我們想從Home的View去call ProductControler下的Action
若要同時滿足上述這些條件
則較合適的overload method會是這種簽章
ActionLink(this AjaxHelper ajaxHelper, 
string linkText, 
string actionName, 
string controllerName, 
RouteValueDictionary routeValues, 
AjaxOptions ajaxOptions);






假如目前產生的A link標籤想增加一些html屬性或是style , class等
則較適合的簽章是這種
ActionLink(this AjaxHelper ajaxHelper, 
string linkText, 
string actionName, 
string controllerName, 
RouteValueDictionary routeValues, 
AjaxOptions ajaxOptions, 
IDictionary<string, object> htmlAttributes);




附上Index 示範兩種ActionLink寫法

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
@{
    ViewBag.Title = "Home Page";
}
<h2>Ajax  ActionLink 測試</h2>
<div>
    @Ajax.ActionLink("獲得目前時間", "GetCurrentDateTime",
                    new { format="short" },
                    new AjaxOptions() { Confirm = "確定要獲取目前時間嗎?",
                        InsertionMode = InsertionMode.Replace,
                        UpdateTargetId="date",
                        HttpMethod="GET",
                        LoadingElementId = "load",
                        LoadingElementDuration = 1000,
                        OnBegin="begin",
                        OnComplete="complete",
                        OnFailure="failure",
                        OnSuccess= "success",
                        //Url = "/Home/GetTestUrl"
                    })
</div>
<div>

    @{
        var rvDic = new RouteValueDictionary();
        rvDic.Add("productId", "a001");
        rvDic.Add("productName", "Iphone13");

        var htmlAttrDic = new Dictionary<string, object>();
        htmlAttrDic.Add("style", "font-size:16px;font-family:微軟正黑體;");
    }

    @Ajax.ActionLink("取得商品資訊(第1種寫法)",
                    "GetProductInfo",
                    "Product",
                    rvDic,
                    new AjaxOptions()
                    {
                        InsertionMode = InsertionMode.Replace,
                        HttpMethod = "Get",
                        UpdateTargetId = "list"
                    },
                    htmlAttrDic)
</div>
<div>
    @Ajax.ActionLink("取得商品資訊(第2種寫法)",
                    "GetProductInfo",
                    "Product",
                    new RouteValueDictionary() {
                        {"productId","a002" },
                        {"productName","Iphone12" },
                    },
                    new AjaxOptions()
                    {
                        InsertionMode = InsertionMode.Replace,
                        HttpMethod = "Get",
                        UpdateTargetId = "list"
                    },
                    new Dictionary<string, object>() {
                        {"style", "font-size:16px;font-family:微軟正黑體;"},
                    })
</div>


<div id="date">顯示時間內容</div>
<div id="list">顯示產品資訊</div>
<div id="begin_date"></div>
<div id="complete_date"></div>
<div id="success_info"></div>
<div id="fail_info"></div>
<div id="load" style="display:none" >加載中...</div>

<script type="text/javascript">
    function GetCurrentDateTime() {
        var d = new Date(),
            str = '';
        str += d.getFullYear() + '年';
        str += d.getMonth() + 1 + '月'; //0~11
        str += d.getDate() + '日';
        str += d.getHours() + '時';
        str += d.getMinutes() + '分';
        str += d.getSeconds() + '秒';
        return str;
    }
    function begin() {
        $("#begin_date").text("OnBegin 最一開始執行" + GetCurrentDateTime());
    }
    function complete() {
        $("#complete_date").text("OnComplete 最後完成局部更新才開始執行" + GetCurrentDateTime());
    }
    function failure() {
        $("#success_info").text("局部刷新失敗" + GetCurrentDateTime());
    }
    function success() {
        $("#fail_info").text("局部刷新成功" + GetCurrentDateTime());
    }
</script>

HomeController


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MvcAjaxTestApp.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        [HttpGet]
        public string GetCurrentDateTime(string format)
        {
            //System.Threading.Thread.Sleep(4000);
            if (format == "short")
                return DateTime.Now.ToShortDateString();
            else
                return DateTime.Now.ToLongDateString();
        }

        [HttpGet]
        public string GetTestUrl()
        {
            return "Test Url Message";
        }


        public ActionResult About()
        {
            ViewBag.Message = "Your application description page.";

            return View();
        }

        public ActionResult Contact()
        {
            ViewBag.Message = "Your contact page.";

            return View();
        }
    }
}

ProductController 


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MvcAjaxTestApp.Controllers
{
    public class ProductController : Controller
    {

        [HttpGet]
        public string GetProductInfo(string productId, string productName)
        {
            return $"產品編號:{productId},產品名稱:{productName}";
        }

    }
}












留言

這個網誌中的熱門文章

經得起原始碼資安弱點掃描的程式設計習慣培養(五)_Missing HSTS Header

(2021年度)駕訓學科筆試準備題庫歸納分析_法規是非題

經得起原始碼資安弱點掃描的程式設計習慣培養(三)_7.Cross Site Scripting(XSS)_Stored XSS_Reflected XSS All Clients