c# winforms pdf viewer control : Delete pages from pdf preview application Library cloud html .net wpf class asp_net_4_and_visual_studio_2010_web_development_overview2-part1196

ASP.NET 4 and Visual Studio 2010 Web Development Overview  
21 
© 2010 Microsoft Corporation 
Replacing the ASP.NET Browser Capabilities Functionality 
To replace the ASP.NET browser capabilities definition functionality completely, follow these steps: 
1.
Create a provider class that derives from HttpCapabilitiesProvider and that overrides the 
GetBrowserCapabilities method, as in the following example: 
public class CustomProvider : HttpCapabilitiesProvider 
public override HttpBrowserCapabilities 
GetBrowserCapabilities(HttpRequest request) 
HttpBrowserCapabilities browserCaps = new HttpBrowserCapabilities(); 
Hashtable values = new Hashtable(180, StringComparer.OrdinalIgnoreCase); 
values[String.Empty] = request.UserAgent; 
values["browser"] = "MyCustomBrowser"; 
browserCaps.Capabilities = values; 
return browserCaps; 
The code in this example creates a new HttpBrowserCapabilities object, specifying only the 
capability named 
browser
and setting that capability to 
MyCustomBrowser
2.
Register the provider with the application. 
In order to use a provider with an application, you must add the provider attribute to the browserCaps 
section in the 
Web.config
or 
Machine.config
files. (You can also define the provider attributes in a 
location element for specific directories in application, such as in a folder for a specific mobile device.) 
The following example shows how to set the provider attribute in a configuration file: 
<system.web> 
<browserCaps provider="ClassLibrary2.CustomProvider, ClassLibrary2, 
Version=1.0.0.0, Culture=neutral" /> 
</system.web> 
Another way to register the new browser capability definition is to use code, as shown in the following 
example: 
void Application_Start(object sender, EventArgs e)  
HttpCapabilitiesBase.BrowserCapabilitiesProvider = 
Delete pages from pdf preview - application Library cloud:C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Easy to Use C# Code to Extract PDF Pages, Copy Pages from One PDF File and Paste into Others
www.rasteredge.com
Delete pages from pdf preview - application Library cloud:VB.NET PDF Page Extract Library: copy, paste, cut PDF pages in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Detailed VB.NET Guide for Extracting Pages from Microsoft PDF Doc
www.rasteredge.com
ASP.NET 4 and Visual Studio 2010 Web Development Overview  
22 
© 2010 Microsoft Corporation 
new ClassLibrary2.CustomProvider(); 
// ...  
This code must run in the Application_Start event of the 
Global.asax
file. Any change to the 
BrowserCapabilitiesProvider class must occur before any code in the application executes, in order to 
make sure that the cache remains in a valid state for the resolved HttpCapabilitiesBase object. 
Caching the HttpBrowserCapabilities Object 
The preceding example has one problem, which is that the code would run each time the custom 
provider is invoked in order to get the HttpBrowserCapabilities object. This can happen multiple times 
during each request. In the example, the code for the provider does not do much. However, if the code 
in your custom provider performs significant work in order to get the HttpBrowserCapabilities object, 
this can affect performance. To prevent this from happening, you can cache the HttpBrowserCapabilities 
object. Follow these steps: 
1.
Create a class that derives from HttpCapabilitiesProvider, like the one in the following example: 
public class CustomProvider : HttpCapabilitiesProvider 
public override HttpBrowserCapabilities 
GetBrowserCapabilities(HttpRequest request) 
string cacheKey = BuildCacheKey(); 
int cacheTime = GetCacheTime(); 
HttpBrowserCapabilities browserCaps = 
HttpContext.Current.Cache[cacheKey] as 
HttpBrowserCapabilities
if (browserCaps == null
HttpBrowserCapabilities browserCaps = new 
HttpBrowserCapabilities(); 
Hashtable values = new Hashtable(180, 
StringComparer.OrdinalIgnoreCase); 
values[String.Empty] = request.UserAgent; 
values["browser"] = "MyCustomBrowser"
browserCaps.Capabilities = values; 
HttpContext.Current.Cache.Insert(cacheKey, 
browserCaps, nullDateTime.MaxValue, 
TimeSpan.FromSeconds(cacheTime)); 
application Library cloud:How to C#: Preview Document Content Using XDoc.Word
How to C#: Preview Document Content Using XDoc.Word. Get Preview From File. You may get document preview image from an existing Word file in C#.net.
www.rasteredge.com
application Library cloud:How to C#: Preview Document Content Using XDoc.PowerPoint
How to C#: Preview Document Content Using XDoc.PowerPoint. Get Preview From File. You may get document preview image from an existing PowerPoint file in C#.net.
www.rasteredge.com
ASP.NET 4 and Visual Studio 2010 Web Development Overview  
23 
© 2010 Microsoft Corporation 
return browserCaps; 
In the example, the code generates a cache key by calling a custom 
BuildCacheKey
method, and it 
gets the length of time to cache by calling a custom 
GetCacheTime
method. The code then adds the 
resolved HttpBrowserCapabilities object to the cache. The object can be retrieved from the cache 
and reused on subsequent requests that make use of the custom provider. 
2.
Register the provider with the application as described in the preceding procedure. 
Extending ASP.NET Browser Capabilities Functionality 
The previous section described how to create a new HttpBrowserCapabilities object in ASP.NET 4. You 
can also extend the ASP.NET browser capabilities functionality by adding new browser capabilities 
definitions to those that are already in ASP.NET. You can do this without using the XML browser 
definitions. The following procedure shows how. 
1.
Create a class that derives from HttpCapabilitiesEvaluator and that overrides the 
GetBrowserCapabilities method, as shown in the following example: 
public class CustomProvider : HttpCapabilitiesEvaluator 
public override HttpBrowserCapabilities 
GetBrowserCapabilities(HttpRequest request) 
HttpBrowserCapabilities browserCaps = 
base.GetHttpBrowserCapabilities(request); 
if (browserCaps.Browser == "Unknown"
browserCaps = MyBrowserCapabilitiesEvaulator(request); 
return browserCaps; 
This code first uses the ASP.NET browser capabilities functionality to try to identify the browser. 
However, if no browser is identified based on the information defined in the request (that is, if the 
Browser property of the HttpBrowserCapabilities object is the string “Unknown”), the code calls the 
custom provider (
MyBrowserCapabilitiesEvaluator
) to identify the browser. 
application Library cloud:VB.NET PDF File Compress Library: Compress reduce PDF size in vb.
a preview component enables compressing and decompressing in preview in ASP images size reducing can help to reduce PDF file size Delete unimportant contents:
www.rasteredge.com
application Library cloud:C# WinForms Viewer: Load, View, Convert, Annotate and Edit PDF
Erase PDF images. • Erase PDF pages. Miscellaneous. • Select PDF text on viewer. • Search PDF text in preview. • View PDF outlines. Related Resources.
www.rasteredge.com
ASP.NET 4 and Visual Studio 2010 Web Development Overview  
24 
© 2010 Microsoft Corporation 
2.
Register the provider with the application as described in the previous example. 
Extending Browser Capabilities Functionality by Adding New Capabilities to Existing 
Capabilities Definitions 
In addition to creating a custom browser definition provider and to dynamically creating new browser 
definitions, you can extend existing browser definitions with additional capabilities. This lets you use a 
definition that is close to what you want but lacks only a few capabilities. To do this, use the following 
steps. 
1.
Create a class that derives from HttpCapabilitiesEvaluator and that overrides the 
GetBrowserCapabilities method, as shown in the following example: 
public class CustomProvider : HttpCapabilitiesEvaluator 
public override HttpBrowserCapabilities 
GetBrowserCapabilities(HttpRequest request) 
HttpBrowserCapabilities browserCaps = 
base.GetHttpBrowserCapabilities(request); 
browserCaps.Frames = true
browserCaps.Capabilities["MultiTouch"] = "true"
return browserCaps; 
The example code extends the existing ASP.NET HttpCapabilitiesEvaluator class and gets the 
HttpBrowserCapabilities object that matches the current request definition by using the following 
code: 
HttpBrowserCapabilities browserCaps = 
base.GetHttpBrowserCapabilities(request); 
The code can then add or modify a capability for this browser. There are two ways to specify a new 
browser capability: 
Add a key/value pair to the IDictionary object that is exposed by the Capabilities property of the 
HttpCapabilitiesBase object. In the previous example, the code adds a capability named 
MultiTouch
with a value of true. 
application Library cloud:C# PDF Page Insert Library: insert pages into PDF file in C#.net
document files by C# code, how to rotate PDF document page, how to delete PDF page using C# .NET, how to reorganize PDF document pages and how
www.rasteredge.com
application Library cloud:How to C#: Preview Document Content Using XDoc.excel
How to C#: Preview Document Content Using XDoc.Excel. Get Preview From File. You may get document preview image from an existing Excel file in C#.net.
www.rasteredge.com
ASP.NET 4 and Visual Studio 2010 Web Development Overview  
25 
© 2010 Microsoft Corporation 
Set existing properties of the HttpCapabilitiesBase object. In the previous example, the code 
sets the Frames property to true. This property is simply an accessor for the IDictionary object 
that is exposed by the Capabilities property. 
Note   This model applies to any property of HttpBrowserCapabilities, including control 
adapters. 
2.
Register the provider with the application as described in the earlier procedure. 
Routing in ASP.NET 4 
ASP.NET 4 adds built-in support for using routing with Web Forms. Routing lets you configure an 
application to accept request URLs that do not map to physical files. Instead, you can use routing to 
define URLs that are meaningful to users and that can help with search-engine optimization (SEO) for 
your application. For example, the URL for a page that displays product categories in an existing 
application might look like the following example: 
http://website/products.aspx?categoryid=12 
By using routing, you can configure the application to accept the following URL to render the same 
information: 
http://website/products/software 
Routing has been available starting with ASP.NET 3.5 SP1. (For an example of how to use routing in 
ASP.NET 3.5 SP1, see the entry Using Routing With WebForms
on Phil Haack's blog.) However, 
ASP.NET 4 includes some features that make it easier to use routing, including the following: 
The PageRouteHandler class, which is a simple HTTP handler that you use when you define routes. 
The class passes data to the page that the request is routed to. 
The new properties HttpRequest.RequestContext and Page.RouteData (which is a proxy for the 
HttpRequest.RequestContext.RouteData object). These properties make it easier to access 
information that is passed from the route. 
The following new expression builders, which are defined in 
System.Web.Compilation.RouteUrlExpressionBuilder and 
System.Web.Compilation.RouteValueExpressionBuilder: 
RouteUrl, which provides a simple way to create a URL that corresponds to a route URL within 
an ASP.NET server control. 
RouteValue, which provides a simple way to extract information from the RouteContext object.  
application Library cloud:VB.NET PDF delete text library: delete, remove text from PDF file
Visual Studio .NET application. Delete text from PDF file in preview without adobe PDF reader component installed. Able to pull text
www.rasteredge.com
application Library cloud:C# Word - Delete Word Document Page in C#.NET
doc.Save(outPutFilePath); Delete Consecutive Pages from Word in C#. int[] detelePageindexes = new int[] { 1, 3, 5, 7, 9 }; // Delete pages.
www.rasteredge.com
ASP.NET 4 and Visual Studio 2010 Web Development Overview  
26 
© 2010 Microsoft Corporation 
The RouteParameter class, which makes it easier to pass data contained in a RouteContext object to 
a query for a data source control (similar to FormParameter). 
Routing for Web Forms Pages 
The following example shows how to define a Web Forms route by using the new MapPageRoute 
method of the Route class: 
public class Global : System.Web.HttpApplication 
void Application_Start(object sender, EventArgs e) 
RouteTable.Routes.MapPageRoute("SearchRoute",  
"search/{searchterm}""~/search.aspx"); 
RouteTable.Routes.MapPageRoute("UserRoute",  
"users/{username}""~/users.aspx"); 
ASP.NET 4 introduces the MapPageRoute method. The following example is equivalent to the 
SearchRoute
definition shown in the previous example, but uses the PageRouteHandler class. 
RouteTable.Routes.Add("SearchRoute", 
new
Route("search/{searchterm}",  
new PageRouteHandler("~/search.aspx"))); 
The code in the example maps the route to a physical page (in the first route, to 
~/search.aspx
). The 
first route definition also specifies that the parameter named 
searchterm
should be extracted from the 
URL and passed to the page. 
The MapPageRoute method supports the following method overloads: 
MapPageRoute(string routeName, string routeUrl, string physicalFile, bool checkPhysicalUrlAccess) 
MapPageRoute(string routeName, string routeUrl, string physicalFile, bool checkPhysicalUrlAccess, 
RouteValueDictionary defaults) 
MapPageRoute(string routeName, string routeUrl, string physicalFile, bool checkPhysicalUrlAccess, 
RouteValueDictionary defaults, RouteValueDictionary constraints) 
The checkPhysicalUrlAccess parameter specifies whether the route should check the security 
permissions for the physical page being routed to (in this case, 
search.aspx
) and the permissions on 
the incoming URL (in this case, 
search/{searchterm}
). If the value of checkPhysicalUrlAccess is false, 
only the permissions of the incoming URL will be checked. These permissions are defined in the 
Web.config
file using settings such as the following: 
application Library cloud:C# PDF delete text Library: delete, remove text from PDF file in
Delete text from PDF file in preview without adobe PDF reader component installed in ASP.NET. C#.NET PDF: Delete Text from Consecutive PDF Pages.
www.rasteredge.com
application Library cloud:C# PowerPoint - Delete PowerPoint Document Page in C#.NET
doc.Save(outPutFilePath); Delete Consecutive Pages from PowerPoint in C#. int[] detelePageindexes = new int[] { 1, 3, 5, 7, 9 }; // Delete pages.
www.rasteredge.com
ASP.NET 4 and Visual Studio 2010 Web Development Overview  
27 
© 2010 Microsoft Corporation 
<configuration
<location path="search.aspx"
<system.web
<authorization
<allow roles="admin"/> 
<deny users="*"/> 
</authorization
</system.web
</location
<location path="search"
<system.web
<authorization
<allow users="*"/> 
</authorization
</system.web
</location
</configuration
In the example configuration, access is denied to the physical page 
search.aspx
for all users except 
those who are in the 
admin
role. When the checkPhysicalUrlAccess parameter is set to true (which is its 
default value), only 
admin
users are allowed to access the URL 
/search/{searchterm}
, because the 
physical page 
search.aspx
is restricted to users in that role. If checkPhysicalUrlAccess is set to false and 
the site is configured as shown in the previous example, all authenticated users are allowed to access 
the URL 
/search/{searchterm}
Reading Routing Information in a Web Forms Page 
In the code of the Web Forms physical page, you can access the information that routing has extracted 
from the URL (or other information that another object has added to the RouteData object) by using 
two new properties: HttpRequest.RequestContext and Page.RouteData. (Page.RouteData wraps 
HttpRequest.RequestContext.RouteData.) The following example shows how to use Page.RouteData. 
protected void Page_Load(object sender, EventArgs e) 
string searchterm = Page.RouteData.Values["searchterm"as string; 
label1.Text = searchterm; 
The code extracts the value that was passed for the 
searchterm
parameter, as defined in the example 
route earlier. Consider the following request URL: 
ASP.NET 4 and Visual Studio 2010 Web Development Overview  
28 
© 2010 Microsoft Corporation 
http://localhost/search/scott/ 
When this request is made, the word "scott" would be rendered in the 
search.aspx
page.  
Accessing Routing Information in Markup 
The method described in the previous section shows how to get route data in code in a Web Forms 
page. You can also use expressions in markup that give you access to the same information. Expression 
builders are a powerful and elegant way to work with declarative code. (For more information, see the 
entry Express Yourself With Custom Expression Builders
on Phil Haack's blog.)  
ASP.NET 4 includes two new expression builders for Web Forms routing. The following example shows 
how to use them. 
<asp:HyperLink ID="HyperLink1" runat="server"  
NavigateUrl="<%$RouteUrl:SearchTerm=scott%>">Search for Scott</asp:HyperLink> 
In the example, the RouteUrl expression is used to define a URL that is based on a route parameter. This 
saves you from having to hard-code the complete URL into the markup, and lets you change the URL 
structure later without requiring any change to this link. 
Based on the route defined earlier, this markup generates the following URL: 
http://localhost/search/scott 
ASP.NET automatically works out the correct route (that is, it generates the correct URL) based on the 
input parameters. You can also include a route name in the expression, which lets you specify a route to 
use. 
The following example shows how to use the RouteValue expression. 
<asp:Label ID="Label1" runat="server" Text="<%$RouteValue:SearchTerm%>" /> 
When the page that contains this control runs, the value "scott" is displayed in the label. 
The RouteValue expression makes it simple to use route data in markup, and it avoids having to work 
with the more complex 
Page.RouteData["x"]
syntax in markup. 
Using Route Data for Data Source Control Parameters 
The RouteParameter class lets you specify route data as a parameter value for queries in a data source 
control. It works much like the FormParameter class, as shown in the following example: 
<asp:sqldatasource id="SqlDataSource1" runat="server"  
ASP.NET 4 and Visual Studio 2010 Web Development Overview  
29 
© 2010 Microsoft Corporation 
connectionstring="<%$ ConnectionStrings:MyNorthwind %>" 
selectcommand="SELECT CompanyName,ShipperID FROM Shippers where  
CompanyName=@companyname" 
<selectparameters
<asp:routeparameter name="companyname" RouteKey="searchterm" /> 
</selectparameters
</asp:sqldatasource
In this case, the value of the route parameter 
searchterm
will be used for the 
@companyname
parameter 
in the Select statement. 
Setting Client IDs 
The new ClientIDMode property addresses a long-standing issue in ASP.NET, namely how controls create 
the id attribute for elements that they render. Knowing the id attribute for rendered elements is 
important if your application includes client script that references these elements. 
The id attribute in HTML that is rendered for Web server controls is generated based on the ClientID 
property of the control. Until ASP.NET 4, the algorithm for generating the id attribute from the ClientID 
property has been to concatenate the naming container (if any) with the ID, and in the case of repeated 
controls (as in data controls), to add a prefix and a sequential number. While this has always guaranteed 
that the IDs of controls in the page are unique, the algorithm has resulted in control IDs that were not 
predictable, and were therefore difficult to reference in client script. 
The new ClientIDMode property lets you specify more precisely how the client ID is generated for 
controls. You can set the ClientIDMode property for any control, including for the page. Possible settings 
are the following: 
AutoID – This is equivalent to the algorithm for generating ClientID property values that was used in 
earlier versions of ASP.NET. 
Static – This specifies that the ClientID value will be the same as the ID without concatenating the 
IDs of parent naming containers. This can be useful in Web user controls. Because a Web user 
control can be located on different pages and in different container controls, it can be difficult to 
write client script for controls that use the AutoID algorithm because you cannot predict what the ID 
values will be.  
Predictable – This option is primarily for use in data controls that use repeating templates. It 
concatenates the ID properties of the control's naming containers, but generated ClientID values do 
not contain strings like "ctlxxx". This setting works in conjunction with the ClientIDRowSuffix 
property of the control. You set the ClientIDRowSuffix property to the name of a data field, and the 
ASP.NET 4 and Visual Studio 2010 Web Development Overview  
30 
© 2010 Microsoft Corporation 
value of that field is used as the suffix for the generated ClientID value. Typically you would use the 
primary key of a data record as the ClientIDRowSuffix value. 
Inherit – This setting is the default behavior for controls; it specifies that a control's ID generation is 
the same as its parent. 
You can set the ClientIDMode property at the page level. This defines the default ClientIDMode value for 
all controls in the current page.  
The default ClientIDMode value at the page level is AutoID, and the default ClientIDMode value at the 
control level is Inherit. As a result, if you do not set this property anywhere in your code, all controls will 
default to the AutoID algorithm.  
You set the page-level value in the @ Page directive, as shown in the following example: 
<%@ Page Language="C#" AutoEventWireup="true"  
CodeFile="Default.aspx.cs"  
Inherits="_Default"  
ClientIDMode="Predictable" %> 
You can also set the ClientIDMode value in the configuration file, either at the computer (machine) level 
or at the application level. This defines the default ClientIDMode setting for all controls in all pages in 
the application. If you set the value at the computer level, it defines the default ClientIDMode setting for 
all Web sites on that computer. The following example shows the ClientIDMode setting in the 
configuration file: 
<system.web
<pages clientIDMode="Predictable"></pages
</system.web> 
As noted earlier, the value of the ClientID property is derived from the naming container for a control’s 
parent. In some scenarios, such as when you are using master pages, controls can end up with IDs like 
those in the following rendered HTML: 
<div id="ctl00_ContentPlaceHolder1_ParentPanel">  
<div id="ctl00_ContentPlaceHolder1_ParentPanel_NamingPanel1">  
<input name="ctl00$ContentPlaceHolder1$ParentPanel$NamingPanel1$TextBox1"  
type="text" value="Hello!"  
id="ctl00_ContentPlaceHolder1_ParentPanel_NamingPanel1_TextBox1" />  
</div
Documents you may be interested
Documents you may be interested