دسترسی نامحدود
برای کاربرانی که ثبت نام کرده اند
برای ارتباط با ما می توانید از طریق شماره موبایل زیر از طریق تماس و پیامک با ما در ارتباط باشید
در صورت عدم پاسخ گویی از طریق پیامک با پشتیبان در ارتباط باشید
برای کاربرانی که ثبت نام کرده اند
درصورت عدم همخوانی توضیحات با کتاب
از ساعت 7 صبح تا 10 شب
ویرایش: 7th
نویسندگان: Adam Freeman
سری:
ISBN (شابک) : 9781484231500
ناشر: Apress
سال نشر: 2017
تعداد صفحات: 1020
زبان: English
فرمت فایل : PDF (درصورت درخواست کاربر به PDF، EPUB یا AZW3 تبدیل می شود)
حجم فایل: 19 مگابایت
در صورت تبدیل فایل کتاب Pro ASP.NET Core MVC 2 به فرمت های PDF، EPUB، AZW3، MOBI و یا DJVU می توانید به پشتیبان اطلاع دهید تا فایل مورد نظر را تبدیل نمایند.
توجه داشته باشید کتاب نرم افزار ASP.NET Core MVC 2 نسخه زبان اصلی می باشد و کتاب ترجمه شده به فارسی نمی باشد. وبسایت اینترنشنال لایبرری ارائه دهنده کتاب های زبان اصلی می باشد و هیچ گونه کتاب ترجمه شده یا نوشته شده به فارسی را ارائه نمی دهد.
اکنون در ویرایش هفتم، پرفروشترین کتاب MVC برای ASP.NET Core MVC 2 بهروزرسانی شده است. این کتاب حاوی توضیحات مفصلی از عملکرد Core MVC است که به توسعهدهندگان این امکان را میدهد تا برنامههای نرمافزاری کمتر، بهینهسازی ابری و آماده برای موبایل برای پلتفرم داتنت تولید کنند. . این کتاب ASP.NET Core MVC را در زمینه قرار می دهد و به ابزارها و تکنیک های مورد نیاز برای ساختن برنامه های کاربردی وب توسعه پذیر مدرن و بهینه سازی شده در فضای ابری می پردازد. تمام ویژگیهای جدید MVC به تفصیل شرح داده شدهاند و نویسنده توضیح میدهد که چگونه میتوان آنها را در پروژههای جدید و موجود به بهترین نحو اعمال کرد. ASP.NET Core MVC Framework آخرین تکامل پلتفرم وب ASP.NET مایکروسافت است که بر اساس یک پایه کاملاً جدید ساخته شده است. این نشان دهنده یک تغییر اساسی در نحوه ساخت و استقرار چارچوب های وب توسط مایکروسافت است و عاری از میراث فناوری های قبلی مانند فرم های وب است. ASP.NET Core MVC یک چارچوب "میزبان آگنوستیک" و یک مدل برنامه نویسی با بهره وری بالا را ارائه می دهد که معماری کد پاک تر، توسعه مبتنی بر آزمایش و توسعه پذیری قدرتمند را ترویج می کند. نویسنده پرفروش، آدام فریمن، این کتاب پیشرو بازار را به طور کامل بازبینی کرده است و توضیح می دهد که چگونه از ASP.NET Core MVC بیشترین بهره را ببرید. او با مهرهها شروع میکند و همه چیز را تا ویژگیهای پیشرفته به شما نشان میدهد و به طور عمیق به شما میپردازد تا دانش لازم را به شما بدهد. این کتاب شامل یک مطالعه موردی کاملاً کار شده از یک برنامه کاربردی وب است که خوانندگان می توانند به عنوان یک الگو برای پروژه های خود استفاده کنند. موارد جدید در این نسخه کاملاً برای Visual Studio 2017، C# 7 و .NET Core 2 به روز شده است. پوشش ویژگی های جدید مانند فیلترهای مشاهده پلت فرم گسترده تر و پوشش ابزار بیش از همیشه، با موارد بیشتر در Visual Studio Code و کار با NET Core در غیر. - پلتفرم های ویندوز استقرار برنامه های کاربردی مبتنی بر Docker آنچه خواهید آموخت به دست آوردن یک درک کامل از معماری ASP.NET Core MVC کل ASP.NET MVC Framework را به عنوان یک کل منسجم کاوش کنید ببینید چگونه MVC و توسعه مبتنی بر آزمایش در عمل کار می کنند اطلاعات جدید در ASP.NET Core MVC 2 و بهترین روش استفاده از این ویژگیهای جدید در کار خود نحوه ایجاد سرویسهای وب RESTful و اپلیکیشنهای تک صفحهای بر اساس دانش موجود خود از نسخههای قبلی MVC ساخته شده تا با مدل برنامهنویسی جدید به سرعت و به سرعت اجرا شود. این کتاب برای توسعه دهندگان وب با دانش پایه ASP.NET و C# است که می خواهند آخرین پیشرفت ها و عملکردها را در چارچوب ASP.NET Core MVC 2 ترکیب کنند.
Now in its 7th edition, the best selling book on MVC is updated for ASP.NET Core MVC 2. It contains detailed explanations of the Core MVC functionality which enables developers to produce leaner, cloud optimized and mobile-ready applications for the .NET platform. This book puts ASP.NET Core MVC into context and dives deep into the tools and techniques required to build modern, cloud optimized extensible web applications. All the new MVC features are described in detail and the author explains how best to apply them to both new and existing projects. The ASP.NET Core MVC Framework is the latest evolution of Microsoft’s ASP.NET web platform, built on a completely new foundation. It represents a fundamental change to how Microsoft constructs and deploys web frameworks and is free of the legacy of earlier technologies such as Web Forms. ASP.NET Core MVC provides a "host agnostic" framework and a high-productivity programming model that promotes cleaner code architecture, test-driven development, and powerful extensibility. Best-selling author Adam Freeman has thoroughly revised this market-leading book and explains how to get the most from ASP.NET Core MVC. He starts with the nuts-and-bolts and shows you everything through to advanced features, going in-depth to give you the knowledge you need. The book includes a fully worked case study of a functioning web application that readers can use as a template for their own projects. What's New in This Edition Fully updated for Visual Studio 2017, C# 7 and .NET Core 2 Coverage of new features such as view filters Wider platform and tooling coverage than ever before, with more on Visual Studio Code and working with .NET Core on non-Windows platforms Docker-based application deployment What You Will Learn Gain a solid architectural understanding of ASP.NET Core MVC Explore the entire ASP.NET MVC Framework as a cohesive whole See how MVC and test-driven development work in action Learn what's new in ASP.NET Core MVC 2 and how best to apply these new features to your own work See how to create RESTful web services and Single Page Applications Build on your existing knowledge of previous MVC releases to get up and running with the new programming model quickly and effectively Who This Book Is For This book is for web developers with a basic knowledge of ASP.NET and C# who want to incorporate the latest improvements and functionality in the ASP.NET Core MVC 2 Framework.
Contents at a Glance......Page 5
Contents......Page 7
About the Author......Page 27
About the Technical Reviewer......Page 28
Part I: Introducing ASP.NET Core MVC 2......Page 29
Understanding the History of ASP.NET Core MVC......Page 30
What Was Wrong with ASP.NET Web Forms?......Page 31
Understanding ASP.NET Core......Page 32
MVC Architecture......Page 33
Testability......Page 34
Cross-Platform......Page 35
Where Can You Get the Example Code?......Page 36
Summary......Page 37
Installing Visual Studio......Page 38
Installing the .NET Core 2.0 SDK......Page 39
Creating a New ASP.NET Core MVC Project......Page 40
Adding the Controller......Page 44
Creating and Rendering a View......Page 47
Adding Dynamic Output......Page 50
Setting the Scene......Page 52
Designing a Data Model......Page 53
Creating a Second Action and a Strongly Typed View......Page 54
Linking Action Methods......Page 56
Building the Form......Page 57
Receiving Form Data......Page 59
Using Model Binding......Page 60
Storing Responses......Page 61
Displaying the Responses......Page 64
Adding Validation......Page 66
Highlighting Invalid Fields......Page 70
Styling the Welcome View......Page 72
Styling the RsvpForm View......Page 74
Styling the Thanks View......Page 76
Styling the List View......Page 77
Summary......Page 78
Understanding Models......Page 79
Understanding Controllers......Page 80
The ASP.NET Implementation of MVC......Page 81
Understanding the Smart UI Pattern......Page 82
Understanding the Model-View Architecture......Page 83
Understanding Classic Three-Tier Architecture......Page 84
Understanding the Model-View-View Model Pattern......Page 85
Creating the Project......Page 86
Understanding MVC Conventions......Page 89
Following Conventions for Views......Page 90
Summary......Page 91
Chapter 4: Essential C# Features......Page 92
Preparing the Example Project......Page 93
Enabling ASP.NET Core MVC......Page 94
Creating the Model......Page 95
Creating the Controller and View......Page 96
Using the Null Conditional Operator......Page 98
Chaining the Null Conditional Operator......Page 99
Combining the Conditional and Coalescing Operators......Page 100
Using Automatically Implemented Properties......Page 101
Using Auto-Implemented Property Initializers......Page 102
Creating Read-Only Automatically Implemented Properties......Page 103
Using String Interpolation......Page 104
Using Object and Collection Initializers......Page 105
Using an Index Initializer......Page 107
Pattern Matching......Page 108
Pattern Matching in Switch Statements......Page 109
Using Extension Methods......Page 110
Applying Extension Methods to an Interface......Page 111
Creating Filtering Extension Methods......Page 113
Using Lambda Expressions......Page 115
Defining Functions......Page 116
Using Lambda Expression Methods and Properties......Page 119
Using Type Inference and Anonymous Types......Page 121
Using Anonymous Types......Page 122
Working with Tasks Directly......Page 124
Applying the async and await Keywords......Page 126
Getting Names......Page 127
Summary......Page 129
Chapter 5: Working with Razor......Page 130
Preparing the Example Project......Page 131
Creating the Controller......Page 132
Creating the View......Page 133
Working with the Model Object......Page 134
Using View Imports......Page 136
Working with Layouts......Page 137
Creating the Layout......Page 138
Applying a Layout......Page 140
Using a View Start File......Page 141
Using Razor Expressions......Page 143
Inserting Data Values......Page 144
Setting Attribute Values......Page 146
Using Conditional Statements......Page 147
Enumerating Arrays and Collections......Page 149
Summary......Page 151
Preparing the Example Project......Page 152
Creating the Model......Page 153
Creating the Controller and View......Page 154
Understanding NuGet......Page 156
Understanding the NuGet Packages List and Location......Page 157
Understanding the Bower Packages List......Page 158
Understanding Iterative Development......Page 162
Making Changes to Razor Views......Page 163
Compiling Classes Automatically......Page 164
Enabling Developer Exception Pages......Page 166
Using the Debugger......Page 167
Setting a Breakpoint......Page 168
Viewing Data Values in the Code Editor......Page 169
Using the Locals Window......Page 171
Setting Up Browser Link......Page 172
Using Browser Link......Page 173
Using Multiple Browsers......Page 175
Preparing JavaScript and CSS for Deployment......Page 177
Adding Static Content to the Project......Page 178
Updating the View......Page 181
Installing the Visual Studio Extension......Page 182
Bundling and Minifying Files......Page 183
Summary......Page 186
Chapter 7: Unit Testing MVC Applications......Page 187
Adding Actions to the Controller......Page 188
Creating the Data Entry Form......Page 189
Updating the Index View......Page 190
Unit Testing MVC Applications......Page 191
Creating a Unit Test Project......Page 192
Writing and Running Unit Tests......Page 193
Running Tests with the Test Explorer......Page 196
Isolating Components for Unit Testing......Page 198
Isolating a Component......Page 199
Parameterizing a Unit Test......Page 206
Getting Test Data from a Method or Property......Page 207
Improving Fake Implementations......Page 210
Adding a Mocking Framework......Page 211
Creating a Mock Object......Page 213
Summary......Page 215
Chapter 8: SportsStore: A Real Application......Page 216
Creating the MVC Project......Page 217
Creating the Folder Structure......Page 218
Configuring the Application......Page 219
Creating the Unit Test Project......Page 221
Checking and Running the Application......Page 222
Starting the Domain Model......Page 223
Creating a Repository......Page 224
Registering the Repository Service......Page 225
Displaying a List of Products......Page 226
Adding a Controller......Page 227
Adding and Configuring the View......Page 228
Setting the Default Route......Page 230
Preparing a Database......Page 231
Installing the Entity Framework Core Tools Package......Page 232
Creating the Repository Class......Page 233
Defining the Connection String......Page 234
Configuring the Application......Page 235
Disabling Scope Verification......Page 236
Creating the Database Migration......Page 237
Creating the Seed Data......Page 238
Adding Pagination......Page 241
Adding the View Model......Page 243
Adding the Tag Helper Class......Page 244
Adding the View Model Data......Page 247
Displaying the Page Links......Page 250
Improving the URLs......Page 252
Installing the Bootstrap Package......Page 254
Applying Bootstrap Styles to the Layout......Page 255
Creating a Partial View......Page 258
Summary......Page 259
Filtering the Product List......Page 260
Refining the URL Scheme......Page 265
Creating the Navigation View Component......Page 269
Generating Category Lists......Page 270
Creating the View......Page 272
Highlighting the Current Category......Page 273
Correcting the Page Count......Page 276
Defining the Cart Model......Page 280
Adding the Add to Cart Buttons......Page 284
Enabling Sessions......Page 286
Implementing the Cart Controller......Page 287
Defining Session State Extension Methods......Page 288
Displaying the Contents of the Cart......Page 289
Summary......Page 293
Creating a Storage-Aware Cart Class......Page 294
Registering the Service......Page 295
Simplifying the Cart Controller......Page 296
Removing Items from the Cart......Page 297
Adding the Font Awesome Package......Page 299
Creating the View Component Class and View......Page 300
Creating the Model Class......Page 302
Adding the Checkout Process......Page 303
Extending the Database......Page 307
Creating the Order Repository......Page 308
Completing the Order Controller......Page 310
Displaying Validation Errors......Page 313
Displaying a Summary Page......Page 315
Summary......Page 316
Enhancing the Model......Page 317
Adding the Actions and View......Page 318
Adding Catalog Management......Page 321
Creating a CRUD Controller......Page 322
Implementing the List View......Page 324
Editing Products......Page 325
Creating the Edit Action Method......Page 326
Creating the Edit View......Page 327
Updating the Product Repository......Page 329
Handling Edit POST Requests......Page 331
Displaying a Confirmation Message......Page 333
Adding Model Validation......Page 334
Enabling Client-Side Validation......Page 337
Creating New Products......Page 339
Deleting Products......Page 340
Summary......Page 344
Creating the Context Class......Page 345
Defining the Connection String......Page 346
Configuring the Application......Page 347
Defining the Seed Data......Page 348
Applying a Basic Authorization Policy......Page 350
Creating the Account Controller and Views......Page 352
Creating the Databases......Page 356
Getting the Connection Strings......Page 357
Creating the Error Controller and View......Page 358
Defining the Production Database Settings......Page 359
Configuring the Application......Page 360
Managing Database Seeding......Page 362
Seeding Identity Data......Page 363
Seeding the Product Data......Page 364
Deploying the Application......Page 366
Summary......Page 370
Installing Node.js......Page 371
Installing Node.js on Linux......Page 372
Checking the Git Installation......Page 373
Installing .NET Core on Linux......Page 374
Installing Visual Studio Code on macOS......Page 375
Checking the Visual Studio Code Installation......Page 376
Creating an ASP.NET Core Project......Page 377
Preparing the Project with Visual Studio Code......Page 378
Managing Client-Side Packages......Page 379
Building and Running the Project......Page 381
Creating the Model and Repository......Page 382
Creating the Database......Page 386
Creating and Applying the Database Migration......Page 387
Creating the Controllers and Views......Page 388
Unit Testing in Visual Studio Code......Page 392
Running Tests......Page 393
Summary......Page 394
Part II: ASP.NET Core MVC 2 in Detail......Page 395
Chapter 14: Configuring Applications......Page 396
Preparing the Example Project......Page 397
Configuring the Project......Page 399
Adding Packages to the Project......Page 400
Adding Tools Packages to the Project......Page 402
Digging into the Configuration Detail......Page 403
Understanding the Startup Class......Page 407
Understanding ASP.NET Services......Page 409
Understanding the Built-In MVC Services......Page 411
Creating Content-Generating Middleware......Page 412
Using Services in Middleware......Page 414
Creating Short-Circuiting Middleware......Page 415
Creating Request-Editing Middleware......Page 417
Creating Response-Editing Middleware......Page 419
Understanding How the Configure Method Is Invoked......Page 421
Using the Application Builder......Page 422
Using the Hosting Environment......Page 423
Enabling Exception Handling......Page 426
Enabling Browser Link......Page 428
Enabling Static Content......Page 429
Configuring the Application......Page 430
Creating the JSON Configuration File......Page 432
Using Configuration Data......Page 434
Configuring Logging......Page 436
Understanding the Logging Configuration Data......Page 437
Creating Custom Log Messages......Page 439
Configuring Dependency Injection......Page 440
Configuring MVC Services......Page 441
Creating Different External Configuration Files......Page 443
Creating Different Configuration Methods......Page 445
Creating Different Configuration Classes......Page 446
Summary......Page 448
Chapter 15: URL Routing......Page 449
Preparing the Example Project......Page 450
Creating the Example Controllers......Page 451
Creating the View......Page 452
Introducing URL Patterns......Page 454
Creating and Registering a Simple Route......Page 455
Defining Default Values......Page 457
Defining Inline Default Values......Page 458
Using Static URL Segments......Page 460
Defining Custom Segment Variables......Page 465
Using Custom Variables as Action Method Parameters......Page 468
Defining Optional URL Segments......Page 469
Defining Variable-Length Routes......Page 471
Constraining Routes......Page 473
Constraining a Route Using a Regular Expression......Page 477
Using Type and Value Constraints......Page 478
Combining Constraints......Page 479
Defining a Custom Constraint......Page 481
Defining an Inline Custom Constraint......Page 482
Preparing for Attribute Routing......Page 483
Applying Attribute Routing......Page 484
Changing the Name of an Action Method......Page 485
Creating a More Complex Route......Page 486
Applying Route Constraints......Page 487
Summary......Page 488
Chapter 16: Advanced Routing Features......Page 489
Preparing the Example Project......Page 490
Generating Outgoing Links......Page 491
Targeting Other Controllers......Page 495
Passing Extra Values......Page 497
Generating Fully Qualified URLs......Page 499
Generating a URL from a Specific Route......Page 500
Generating URLs in Action Methods......Page 503
Changing the Routing System Configuration......Page 504
Creating a Custom Route Class......Page 506
Routing Incoming URLs......Page 507
Applying a Custom Route Class......Page 509
Routing to MVC Controllers......Page 510
Generating Outgoing URLs......Page 514
Creating an Area......Page 517
Creating an Area Route......Page 518
Populating an Area......Page 519
Generating Links to Actions in Areas......Page 522
Making Your URLs Clean and Human-Friendly......Page 523
GET and POST: Picking the Right One......Page 524
Summary......Page 525
Chapter 17: Controllers and Actions......Page 526
Preparing the Example Project......Page 527
Preparing the Views......Page 528
Understanding Controllers......Page 530
Creating POCO Controllers......Page 531
Using the MVC Controller API......Page 532
Using the Controller Base Class......Page 533
Getting Data from Context Objects......Page 535
Getting Context Data in a POCO Controller......Page 537
Using Action Method Parameters......Page 539
Producing a Response Using the Context Object......Page 541
Understanding Action Results......Page 543
Producing an HTML Response......Page 545
Understanding the Search for a View File......Page 547
Using a View Model Object......Page 549
Passing Data with the View Bag......Page 553
Performing Redirections......Page 554
Redirecting to a Literal URL......Page 555
Redirecting to a Routing System URL......Page 557
Redirecting to an Action Method......Page 558
Using the Post/Redirect/Get Pattern......Page 559
Using Temp Data......Page 560
Producing a JSON Response......Page 562
Using Objects to Generate Responses......Page 563
Responding with the Contents of Files......Page 564
Returning Errors and HTTP Codes......Page 566
Sending a Specific HTTP Result Code......Page 567
Understanding the Other Action Result Classes......Page 568
Summary......Page 569
Chapter 18: Dependency Injection......Page 570
Preparing the Example Project......Page 571
Creating the Model and Repository......Page 572
Creating the Controller and View......Page 573
Creating Loosely Coupled Components......Page 575
Examining Closely Coupled Components......Page 576
Decoupling Components for Unit Testing......Page 577
Using a Type Broker......Page 579
Preparing for Dependency Injection......Page 583
Configuring the Service Provider......Page 584
Unit Testing a Controller with a Dependency......Page 586
Using Dependency Chains......Page 587
Using Dependency Injection for Concrete Types......Page 589
Understanding Service Life Cycles......Page 592
Using the Transient Life Cycle......Page 593
Using a Factory Function......Page 595
Using the Scoped Life Cycle......Page 597
Using the Singleton Life Cycle......Page 599
Using Action Injection......Page 600
Manually Requesting an Implementation Object......Page 601
Summary......Page 602
Chapter 19: Filters......Page 603
Preparing the Example Project......Page 604
Creating the Controller and View......Page 605
Using Filters......Page 607
Understanding Filters......Page 610
Getting Context Data......Page 611
Creating an Authorization Filter......Page 612
Using Action Filters......Page 615
Creating an Action Filter......Page 616
Creating an Asynchronous Action Filter......Page 618
Using Result Filters......Page 619
Creating a Result Filter......Page 620
Creating an Asynchronous Result Filter......Page 622
Creating a Hybrid Action/Result Filter......Page 623
Using Exception Filters......Page 625
Creating an Exception Filter......Page 626
Resolving Filter Dependencies......Page 628
Creating Filters with Dependencies......Page 630
Applying the Filters......Page 631
Managing Filter Life Cycles......Page 633
Applying the Filter......Page 634
Creating Global Filters......Page 636
Understanding and Changing Filter Order......Page 638
Changing Filter Order......Page 640
Summary......Page 641
Chapter 20: API Controllers......Page 642
Creating the Model and Repository......Page 643
Creating the Controller and Views......Page 645
Setting the HTTP Port......Page 648
Understanding the Efficiency Problem......Page 649
Introducing REST and API Controllers......Page 650
Creating an API Controller......Page 651
Declaring Dependencies......Page 653
Defining the Action Methods......Page 654
Defining the Action Results......Page 655
Testing the GET Operations......Page 656
Testing the PUT Operation......Page 658
Testing the Patch Operation......Page 659
Using the API Controller in the Browser......Page 660
Understanding Content Formatting......Page 662
Understanding the Default Content Policy......Page 663
Understanding Content Negotiation......Page 664
Enabling XML Formatting......Page 665
Specifying an Action Data Format......Page 667
Getting the Data Format from the Route or Query String......Page 668
Enabling Full Content Negotiation......Page 670
Receiving Different Data Formats......Page 671
Summary......Page 672
Chapter 21: Views......Page 673
Preparing the Example Project......Page 674
Creating a Custom View Engine......Page 675
Creating a Custom IView......Page 677
Creating an IViewEngine Implementation......Page 678
Registering a Custom View Engine......Page 679
Testing the View Engine......Page 680
Working with the Razor Engine......Page 682
Preparing the Example Project......Page 683
Demystifying Razor Views......Page 685
Understanding the Base Class......Page 686
Understanding the View Rendering......Page 688
Using Layout Sections......Page 689
Rendering Optional Sections......Page 693
Applying a Partial View......Page 695
Using Strongly Typed Partial Views......Page 697
Adding JSON Content to Views......Page 698
Configuring Razor......Page 700
Understanding View Location Expanders......Page 701
Applying the View Location Expander......Page 702
Selecting Specific Views for Requests......Page 703
Summary......Page 706
Chapter 22: View Components......Page 707
Creating the Models and Repositories......Page 708
Creating the Controller and Views......Page 710
Configuring the Application......Page 713
Creating a View Component......Page 714
Creating POCO View Components......Page 715
Deriving from the ViewComponent Base Class......Page 716
Understanding View Component Results......Page 718
Returning a Partial View......Page 719
Returning HTML Fragments......Page 721
Getting Context Data......Page 723
Providing Context from the Parent View Using Arguments......Page 726
Creating Asynchronous View Components......Page 729
Creating Hybrid Controller/View Component Classes......Page 731
Creating the Hybrid Views......Page 732
Applying the Hybrid Class......Page 733
Summary......Page 735
Chapter 23: Understanding Tag Helpers......Page 736
Creating the Model and Repository......Page 737
Creating the Controller, Layout, and Views......Page 738
Configuring the Application......Page 741
Creating a Tag Helper......Page 742
Defining the Tag Helper Class......Page 743
Receiving Context Data......Page 744
Producing Output......Page 745
Registering Tag Helpers......Page 746
Using a Tag Helper......Page 747
Managing the Scope of a Tag Helper......Page 749
Narrowing the Scope of a Tag Helper......Page 750
Widening the Scope of a Tag Helper......Page 751
Creating Shorthand Elements......Page 754
Prepending and Appending Content and Elements......Page 756
Inserting Content Around the Output Element......Page 757
Inserting Content Inside the Output Element......Page 759
Getting View Context Data and Using Dependency Injection......Page 760
Working with the View Model......Page 762
Coordinating Between Tag Helpers......Page 765
Suppressing the Output Element......Page 767
Summary......Page 768
Chapter 24: Using the Form Tag Helpers......Page 769
Resetting the Views and Layout......Page 770
Working with Form Elements......Page 772
Setting the Form Target......Page 773
Using the Anti-forgery Feature......Page 774
Working with Input Elements......Page 776
Configuring Input Elements......Page 777
Formatting Data Values......Page 779
Applying Formatting via the Model Class......Page 781
Working with Label Elements......Page 782
Working with Select and Option Elements......Page 784
Generating Option Elements from an enum......Page 786
Generating Option Elements from the Model......Page 788
Using a Custom Tag Helper to Generate Option Elements from the Model......Page 789
Working with Text Areas......Page 791
Summary......Page 793
Chapter 25: Using the Other Built-in Tag Helpers......Page 794
Preparing the Example Project......Page 795
Using the Hosting Environment Tag Helper......Page 796
Managing JavaScript Files......Page 797
Selecting JavaScript Files......Page 798
Narrowing the Globbing Pattern......Page 801
Excluding Files......Page 802
Using the Hosting Environment to Select Files......Page 803
Working with Content Delivery Networks......Page 805
Managing CSS Stylesheets......Page 807
Selecting Stylesheets......Page 808
Working with Content Delivery Networks......Page 809
Working with Anchor Elements......Page 810
Working with Image Elements......Page 811
Using the Data Cache......Page 812
Setting Cache Expiry......Page 815
Setting a Fixed Expiry Point......Page 816
Using Cache Variations......Page 817
Using Application-Relative URLs......Page 819
Summary......Page 822
Chapter 26: Model Binding......Page 823
Creating the Model and Repository......Page 824
Creating the Controller and View......Page 826
Configuring the Application......Page 827
Understanding Model Binding......Page 829
Understanding Default Binding Values......Page 830
Binding Simple Types......Page 832
Binding Complex Types......Page 833
Creating Easily Bound HTML......Page 835
Specifying Custom Prefixes......Page 838
Selectively Binding Properties......Page 842
Binding to Arrays......Page 844
Binding to Collections......Page 846
Binding to Collections of Complex Types......Page 848
Specifying a Model Binding Source......Page 851
Selecting a Standard Binding Source......Page 852
Using Headers As Binding Sources......Page 853
Binding Complex Types from Headers......Page 855
Using Request Bodies as Binding Sources......Page 857
Summary......Page 859
Chapter 27: Model Validation......Page 860
Preparing the Example Project......Page 861
Creating the Controller......Page 862
Creating the Layout and Views......Page 863
Explicitly Validating a Model......Page 866
Displaying Validation Errors to the User......Page 869
Displaying Validation Messages......Page 871
Configuring the Default Validation Error Messages......Page 873
Displaying Property-Level Validation Messages......Page 875
Displaying Model-Level Messages......Page 877
Specifying Validation Rules Using Metadata......Page 880
Creating a Custom Property Validation Attribute......Page 883
Performing Client-Side Validation......Page 885
Performing Remote Validation......Page 888
Summary......Page 891
Chapter 28: Getting Started with Identity......Page 892
Preparing the Example Project......Page 893
Creating the Controller and View......Page 894
Creating the User Class......Page 896
Configuring the View Imports......Page 897
Configuring the Database Connection String Setting......Page 898
Enumerating User Accounts......Page 901
Creating Users......Page 904
Testing the Create Functionality......Page 906
Validating Passwords......Page 908
Implementing a Custom Password Validator......Page 910
Validating User Details......Page 915
Implementing Custom User Validation......Page 918
Implementing the Delete Feature......Page 921
Implementing the Edit Feature......Page 923
Creating the View......Page 926
Summary......Page 928
Preparing the Example Project......Page 929
Authenticating Users......Page 930
Preparing to Implement Authentication......Page 932
Adding User Authentication......Page 935
Testing Authentication......Page 937
Authorizing Users with Roles......Page 938
Creating and Deleting Roles......Page 939
Creating the Views......Page 941
Managing Role Memberships......Page 944
Testing and Editing Role Membership......Page 948
Using Roles for Authorization......Page 950
Seeding the Database......Page 953
Summary......Page 957
Preparing the Example Project......Page 958
Adding Custom User Properties......Page 960
Preparing for Database Migration......Page 963
Working with Claims and Policies......Page 964
Understanding Claims......Page 965
Creating Claims......Page 969
Using Policies......Page 973
Creating Custom Policy Requirements......Page 976
Using Policies to Authorize Access to Resources......Page 979
Creating the Resource Authorization Policy and Handler......Page 981
Enabling Google Authentication......Page 985
Summary......Page 990
Preparing the Example Project......Page 991
Creating the View Model, Controller, and View......Page 992
Using the Application Model and Model Conventions......Page 994
Understanding the Application Model......Page 995
Customizing the Application Model......Page 997
Understanding the Role of Model Conventions......Page 999
Creating a Model Convention......Page 1000
Using Conventions That Add or Remove Models......Page 1001
Understanding Model Convention Execution Order......Page 1005
Creating Global Model Conventions......Page 1006
Preparing the Example Project......Page 1008
Understanding Action Constraints......Page 1011
Creating an Action Constraint......Page 1012
Creating a Comparative Action Constraint......Page 1014
Resolving Dependencies in Action Constraints......Page 1016
Summary......Page 1019
Index......Page 1020