Search Results

Search found 16885 results on 676 pages for 'custom headers'.

Page 246/676 | < Previous Page | 242 243 244 245 246 247 248 249 250 251 252 253  | Next Page >

  • Windows PE 3.0 detect what device it was booted from

    - by Brian
    I am creating a custom boot disk for work using Windows PE 3.0. I need to be able to tell what drive the system was booted from. it may be a CD, or a USB Flash drive. In the past, I have looked for a file on the root of the drive that holds some of our custom configuration. however that is getting a bit messy. Basically, in addition to Windows PE, the drive or disk also has other scripts and tools. I need to remount that USB drive or DVD to the U:\ Drive, to keep thing consistent. Basically, Diskpart.exe Select Volume $X assign Letter=U Exit I just need to figure out how to determine that nasty little $X.

    Read the article

  • How to integrate Thunderbird with SpamAssassin running on the server?

    - by haimg
    I'm trying to integrate SpamAssassin running on a server with Thunderbird. Basically I need to be able to select several emails in Thunderbird and send them back to SpamAssassin for training, either as spam or ham. I tried several approaches: Tried "Report Spam" plugin, which is able to send message back to server either as an email attachment or via HTTP post. However, the plugin is rather buggy... Does not support sending several messages at once, "report as ham" is not working at all, etc. Wanted to make a custom button that will copy selected messages to a separate IMAP folder (I could create "LearnAsSpam" and "LearnAsHam" folders in IMAP that will get processed automatically on server), but don't even know how to approach this in Thunderbird, don't want to learn Thunderbird extention authoring... Server-side, I'm prepared to do some custom programming or integration needed (can receive a message via HTTP / SMTP / whatever), my stumbling block is Thunderbird... So, how can I send emails from Thunderbird back to SpamAssassin running on email server for Bayesian training, with as few keystrokes as possible?

    Read the article

  • Is it possible to have non-English regional settings with English day/month names?

    - by Indrek
    I live in Estonia where most regional settings (number, currency and date formats) differ from those used in English-speaking countries. For instance, decimal symbol is comma, thousands separator is space, date format is day-month-year, etc. However, if I set my regional settings to Estonian, then day and month names are also shown in Estonian everywhere: This is slightly annoying since the language used for the rest of Windows is English and I'd like the day and month names to be consistent with it. Is this possible while still keeping the local regional settings? One workaround I've tried is to set regional settings to, say, English (UK) and then customise them to match Estonian settings, but that messes up alphabetic sorting - accented letters like "ö" and "ä" are no longer distinguished from their non-accented versions, and "z" is sorted as last rather than at its correct position in the Estonian alphabet (between "s" and "t"). OS is Windows 7 Professional, in case that matters. Edit: alternatively, if there's no built-in way to accomplish what I want, is it possible to create a custom set of regional settings (like one can create custom keyboard layouts)?

    Read the article

  • How to dynamically set HTTP Header in Apache 2.2?

    - by Michael
    Seems like this should be easy, but I cannot figure out the syntax. In Apache, I want to use the value of an existing request header to set a new request header. Some simple non-working code that illustrates what I'd like to do: RequestHeader set X-Custom-Host-Header "%{HTTP_HOST}e" Ideally, this would make a new HTTP header in the request called "X-Custom-Host-Header" that contains the value of the existing Host header. But it does not. Perhaps I need to copy the existing header into an environment variable first? (If so, I can't figure out how to do that either.) I feel like I'm missing something obvious, but I've gone over the Apache docs and I can't figure it out. Thanks for any help.

    Read the article

  • Distributing application updates using SCCM 2007

    - by theraneman
    Hi all, If there are any System Center Config Manager (SCCM) users out there, please clarify my doubt here. I have used the ConfigMgr console to distribute a custom application to a client machine. Now I need to distribute some updated files of that application. Isnt's it possible to add those files in the same package source used earlier and advertise again? Or should I use the SCCM software update section for this? Not sure if its only me, but the Software distribution process looks much easier than the Software Updates process in SCCM 2007. Please do let me know if there any online tutorials which explain how to update a custom application. Any help much appreciated.

    Read the article

  • All Tasks..Advanced Operations option missing from Certificaces MMC Snap-In

    - by JohnFx
    I am trying to follow the instructions in this article to create a custom certificate to support SSL on a web server. I'm stick on the following step: Click on Personal – All Tasks – Advanced Operations – Create Custom request The problem is that on the web server (Windows Server 2003 R2) I don't have an "Advanced Operations" option under "All Tasks". I do on my desktop machine (Windows 7), but not on the server. All the documentation I can find indicates that it should be available on WS-2003-R2, but it just isn't. Note: I'm going through this manual process because I need to specify a alternate host names in the CSR, which you can't do through the IIS 6.0 console certificate managment functionality. Any suggestions for how to make this option show up?

    Read the article

  • How to change the install path of my Linux Source tree?

    - by Sen
    I was trying to bring up my custom kernel. I did the following : make menuconfig && make modules && make modules_install && make install I would like to change the install PATH. How can i do that? I tried doing export INSTALL_PATH=<my custom path> But then it is only creating the vmlinux.bin(it is not creating the ramdisk image!!) But if i am not doing that, make install will automatically create the ramdisk image in the default /boot folder. How can i change that?? Thanks, Sen

    Read the article

  • How to disable Utility Manager (Windows Key + U)

    - by Skizz
    How do I disable the Windows Key+U hotkey in Windows XP? Alternatively, how do I stop the utility manager from being active? The two are related. The utilty manager is currently providing a potential security hole and I need to remove it*. The system I'm developing uses a custom Gina to log in and start a custom shell. This removes most Windows Key hotkeys but the Win+U still pops up the manager app. Update: Things I've tried and don't work: NoWinKeys registry setting - this only affects explorer hotkeys; Renaming utilman.exe - program reappears next login; Third party software - not really an option, these machines are audited by the clients and additional, third party software would be unlikely to be accepted. Also, the proedure needs to be reasonably straightforward - this has to be done by field service engineers to existing machines (machines currently in Russia, Holland, France, Spain, Ireland and USA). * The hole is via the internet options in the help viewer the utility app links to.

    Read the article

  • How to update a keyboard layout DLL on Windows?

    - by user87690
    Information about keyboard layout is stored in keyboard layout DLLs on Windows. One can make a custom layout using a tool like Microsoft Keyboard Layout Creator (http://msdn.microsoft.com/en-us/goglobal/bb964665.aspx). It creates the dynamical library and also an installer which places the DLL at a right place and also puts necessary information to registry so the layout can be used. Now my question. How can one update his custom layout? One could uninstall the layout and install the new version which effectively replaces the DLL file. However this alone doesn't work because it seems that the old copy of the DLL stays loaded somewhere and is used when one sets the layout instead of loading new version. So is there a way how to tell the system that its “keyboard layout cache” is invalid? Of course I could reboot the whole system but I'd like to avoid it as it's annoying and seems to be poor design to reboot whole system just to reload a DLL.

    Read the article

  • How to modify existing keyboard layout (RU, kbdru.dll)?

    - by Anton
    There's a program I'm thinking of using called Punto Switcher that detects a language I'm typing in and switching entire word between Russian and English. The problem I have with this setup is that even though most of Russian letters "correspond" to English letters, Russian keys are scattered all over the keyboard and I don't feel like learning them all as I type in English mostly. Now, the program is very specific about me using RU, kbdru.dll file, not any other and if I use a custom keyboard under Russian, it doesn't recognize what I type so I think I should change the default RU keyboard. I created my custom keyboard using Microsoft's tool and I need to modify original one. I think it will take more than just replacing a file. Help?

    Read the article

  • nginx: override global ssl directives for specific servers

    - by alkar
    In my configuration I have placed the ssl_* directives inside the http block and have been using a wildcard certificate certified by a custom CA without any problems. However, I now want to use a new certificate for a new subdomain (a server), that has been certified by a recognized CA. Let's say the TLD is blah.org. I want my custom certificate with CN *.blah.org to be used on all domains except for new.blah.org that will use its own certificate/key pair of files with CN new.blah.org. How would one do that? Adding new ssl_* directives inside the server block doesn't seem to override the global settings.

    Read the article

  • CMD: Append to path without duplicating it?

    - by Horst Walter
    For one CMD session I can easily set a new path: SET PATH=%PATH%;"insert custom path here" Doing so in a batch file does not consider whether the custom path is already included. How do I avoid duplicating it (i.e. check whether it is already contained in the PATH "string"). Remarks: Related: How do I append user-defined environment variables to the system variable PATH in Windows 7? Related: How can I permanently append an entry into the system's PATH variable, via command line? Same question for UNIX: Add directory to $PATH if it's not already there

    Read the article

  • Using Postgres on Volusion site

    - by Sean
    Okay, I apologize if this is so basic that I should know the answer, but I'm not sure where else to go for the solution. I would like to start a small store site using Volusion. I would like some custom ASP code to query data that I currently have in a Postgres database. I would like to be able to just move the database file(s) onto the Volusion server via ftp and access them from my store site (via the custom ASP). Do I need to install Postgres onto the server to do this, or can I just ftp my database file(s) and access them with the ASP code? I think I need to install Postgres, but would like to do this without such an installation if possible.

    Read the article

  • Raid system fails to boot after moving from 2.6 kernel to 3.5

    - by user846226
    I'm running Gentoo Linux with a custom compiled kernel and I've just migrated from a 2.6 kernel to a 3.5. As my HD's are on RAID 0 mode I use a custom initrd file in order to be able to boot. While kernel 2.6 is able to boot without problems the new 3.5 compiled kernel fails to boot complaining about no block devices found. After taking a look at initrd.cpio contained scripts I can see the failure message is given by mdadm tool. Does anyone has a clue about that? Edit: this morning i noticed there was some kind of issue on my old initrd which works fine for 2.6 kernels, so created a new initrd which works fine and let me to boot into GNU/Gentoo Linux with same 3.5 bzImage. It could be an issue of mdadm, gonna check it. https://bugs.gentoo.org/show_bug.cgi?id=416081

    Read the article

  • SharePoint Calendar - Start time after a certain hour

    - by KodovaKim
    I am working with SharePoint Calendar list to create a shift schedule for a team (End user side of things, I am not writing code). I have added a few custom columns to the Calendar List Item. I have the list exported to excel where I have a Pivot table set up so I can see a summary of the different columns - I can see the person's name (From the title column), total hours they are scheduled for (separated into weekdays and weekends based on a custom column I added). What I need is a way to check the start time of the shift to determine if it is a Day shift (starts at 7am), Eve shift (starts at 3pm), or a Night shift (starts at 10pm). So, when creating a new calculated column I would assume the function I need would go something like "=If([StartDate]...." but I am not sure on the rest. Anyone know how I would write that function?

    Read the article

  • gmetric data submitted doesn't follow dmax value

    - by 580farm
    I have a custom script that is querying a metric port for an application that I'm running and submitting parsed values to ganglia via gmetric. The script runs every minute, so I submit the data to ganglia using the following gmetric options: /usr/sbin/gmetric -g ec2 -s positive -t uint32 -d 600 -n "$NAME" -v $VALUE -x 60 But for some reason there are still gaps in the graphing data: Is there something in my formatting that is preventing the dmax/ttl of the last metric received from being honored? Is there anyone who does custom metric collection that has run into this problem before that can shed some insight or provide some tips as to how to best correct this?

    Read the article

  • Windows 7 Taskbar doesn't remember configuration

    - by eidylon
    Hi all... I have my taskbar on Win7 all customized. I have it at the top of the screen, and i have the address bar, desktop toolbar, and a custom folder toolbar all turned on. I have it set to two rows, and have the taskbar and desktop on one row and the address bar and custom folder on the second row. When i shutdown then restart my computer it remembers that i have the taskbar at the top of the screen, but it does not remember the way i had the various bars organized, and it just makes it a single row with the bars all mushed together on one row. Anyone else had this/know how to fix it? Running Win7 Ultimate x64.

    Read the article

  • Htaccess Redirect with domain attributes

    - by PHP Bugs
    I have to write a redirect rule for the below condition. www.domain.com/custom.aspx?ATTR=VALUE to www.domain.com/custom?ATTR=VALUE How can this be achieved using the .htaccess I have the below set of codes using on the current .htaccess file. Please also suggest where to include your code. <IfModule mod_rewrite.c> Options +FollowSymLinks RewriteEngine on RewriteRule ^api/rest api.php?type=rest [QSA,L] RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteCond %{REQUEST_METHOD} ^TRAC[EK] RewriteRule .* - [L,R=405] RewriteCond %{REQUEST_URI} !^/(media|skin|js)/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-l RewriteRule .* index.php [L] </IfModule>

    Read the article

  • apache redirect htacess on error 500

    - by meWantToLearn
    Im trying to redirect on Error 500 , but its not happening. .htaccess file ErrorDocument 500 /custom.php custom.php just has a echo '<h1>ERROR OCCURED </h1>'; should I configure httpd.conf ? is there anything else that Im missing my httpd.conf Alias /error/ "/var/www/error/" <IfModule mod_negotiation.c> <IfModule mod_include.c> <Directory "/var/www/error"> AllowOverride all Options IncludesNoExec AddOutputFilter Includes html AddHandler type-map var Order allow,deny Allow from all LanguagePriority en es de fr ForceLanguagePriority Prefer Fallback </Directory>

    Read the article

  • Postfix - How to process incoming emails?

    - by Borivojevic
    Hello Does anybody know how to process incoming emails for virtual mailboxes in postfix? I am building web application where users add new content by sending emails to application. Email address used for each user is custom (eg. [email protected]) and it is dynamically created as a Postfix virtual mailbox. User needs to be able to send email to his custom mailbox address ([email protected]) and i want to process each incoming email, parse it's contents and populate my database with data from email. I tried using Postfix After Queue filter but what i really wont is to process emails once they are saved in users virtual mailbox folder.

    Read the article

  • Word 2010 Style Sets and Multilevel Lists

    - by Stevia
    In Word 2010, how can you create quick style sets that include multilevel lists (include being the operative word)? As background, I have created a set of styles for a long agreement form and assigned them to levels in a certain custom multilevel list. I then also saved those styles as a quick style set called Long Agreement. I have saved those styles in my normal template. That all works fine for assigning styles to a Long Agreement. What I'd like to do next is create a second style set called Short Agreement. I will assign certain styles to that style set. The issue is that I don't see how to tie a different custom multilevel list to those Short Agreement styles. When I click on Change Styles, Short Agreement [style set], and I apply those styles, how can I get it to automatically use the multilevel list that I assign to short agreements?

    Read the article

  • Word 2010 Style Sets and Multilevel Lists

    - by Stevia
    In Word 2010, how can you create quick style sets that include multilevel lists (include being the operative word)? As background, I have created a set of styles for a long agreement form and assigned them to levels in a certain custom multilevel list. I then also saved those styles as a quick style set called Long Agreement. I have saved those styles in my normal template. That all works fine for assigning styles to a Long Agreement. What I'd like to do next is create a second style set called Short Agreement. I will assign certain styles to that style set. The issue is that I don't see how to tie a different custom multilevel list to those Short Agreement styles. When I click on Change Styles, Short Agreement [style set], and I apply those styles, how can I get it to automatically use the multilevel list that I assign to short agreements?

    Read the article

  • Creating Key Flex Field (KFF) Bean in OAF

    - by Manoj Madhusoodanan
    This blog describes how to create KFF in OAF Page.Here I am going to demonstrate with standard Job KFF. I have created a new structure in Job KFF which I am going to use it in my custom OAF page.Please see the below pic. In the above created structure I have created following segments.You can see the valuesets also. In the custom page I have created an item with following properties. In the Segment List property you can give which segments are going to use in the KFF. The syntax for defining it is  KFF Code|Segment1|Segment2|Segment3|Segment4|Segment N In the table just create a field to hold the code combination.Please click here to see table script. Code combination will goes into JOB_ID field of the table. In the processRequest method of the page controller add following code snippet to attach the KFF structure and CCID column to the KFF bean. Deploy the files belonging to this solution to the server. Following is the output of the above solution. If you click on JobId you can see the KFF window.   Code Combination Id has created in the table.      

    Read the article

  • ASP.NET MVC Paging/Sorting/Filtering a list using ModelMetadata

    - by rajbk
    This post looks at how to control paging, sorting and filtering when displaying a list of data by specifying attributes in your Model using the ASP.NET MVC framework and the excellent MVCContrib library. It also shows how to hide/show columns and control the formatting of data using attributes.  This uses the Northwind database. A sample project is attached at the end of this post. Let’s start by looking at a class called ProductViewModel. The properties in the class are decorated with attributes. The OrderBy attribute tells the system that the Model can be sorted using that property. The SearchFilter attribute tells the system that filtering is allowed on that property. Filtering type is set by the  FilterType enum which currently supports Equals and Contains. The ScaffoldColumn property specifies if a column is hidden or not The DisplayFormat specifies how the data is formatted. public class ProductViewModel { [OrderBy(IsDefault = true)] [ScaffoldColumn(false)] public int? ProductID { get; set; }   [SearchFilter(FilterType.Contains)] [OrderBy] [DisplayName("Product Name")] public string ProductName { get; set; }   [OrderBy] [DisplayName("Unit Price")] [DisplayFormat(DataFormatString = "{0:c}")] public System.Nullable<decimal> UnitPrice { get; set; }   [DisplayName("Category Name")] public string CategoryName { get; set; }   [SearchFilter] [ScaffoldColumn(false)] public int? CategoryID { get; set; }   [SearchFilter] [ScaffoldColumn(false)] public int? SupplierID { get; set; }   [OrderBy] public bool Discontinued { get; set; } } Before we explore the code further, lets look at the UI.  The UI has a section for filtering the data. The column headers with links are sortable. Paging is also supported with the help of a pager row. The pager is rendered using the MVCContrib Pager component. The data is displayed using a customized version of the MVCContrib Grid component. The customization was done in order for the Grid to be aware of the attributes mentioned above. Now, let’s look at what happens when we perform actions on this page. The diagram below shows the process: The form on the page has its method set to “GET” therefore we see all the parameters in the query string. The query string is shown in blue above. This query gets routed to an action called Index with parameters of type ProductViewModel and PageSortOptions. The parameters in the query string get mapped to the input parameters using model binding. The ProductView object created has the information needed to filter data while the PageAndSorting object is used for paging and sorting the data. The last block in the figure above shows how the filtered and paged list is created. We receive a product list from our product repository (which is of type IQueryable) and first filter it by calliing the AsFiltered extension method passing in the productFilters object and then call the AsPagination extension method passing in the pageSort object. The AsFiltered extension method looks at the type of the filter instance passed in. It skips properties in the instance that do not have the SearchFilter attribute. For properties that have the SearchFilter attribute, it adds filter expression trees to filter against the IQueryable data. The AsPagination extension method looks at the type of the IQueryable and ensures that the column being sorted on has the OrderBy attribute. If it does not find one, it looks for the default sort field [OrderBy(IsDefault = true)]. It is required that at least one attribute in your model has the [OrderBy(IsDefault = true)]. This because a person could be performing paging without specifying an order by column. As you may recall the LINQ Skip method now requires that you call an OrderBy method before it. Therefore we need a default order by column to perform paging. The extension method adds a order expressoin tree to the IQueryable and calls the MVCContrib AsPagination extension method to page the data. Implementation Notes Auto Postback The search filter region auto performs a get request anytime the dropdown selection is changed. This is implemented using the following jQuery snippet $(document).ready(function () { $("#productSearch").change(function () { this.submit(); }); }); Strongly Typed View The code used in the Action method is shown below: public ActionResult Index(ProductViewModel productFilters, PageSortOptions pageSortOptions) { var productPagedList = productRepository.GetProductsProjected().AsFiltered(productFilters).AsPagination(pageSortOptions);   var productViewFilterContainer = new ProductViewFilterContainer(); productViewFilterContainer.Fill(productFilters.CategoryID, productFilters.SupplierID, productFilters.ProductName);   var gridSortOptions = new GridSortOptions { Column = pageSortOptions.Column, Direction = pageSortOptions.Direction };   var productListContainer = new ProductListContainerModel { ProductPagedList = productPagedList, ProductViewFilterContainer = productViewFilterContainer, GridSortOptions = gridSortOptions };   return View(productListContainer); } As you see above, the object that is returned to the view is of type ProductListContainerModel. This contains all the information need for the view to render the Search filter section (including dropdowns),  the Html.Pager (MVCContrib) and the Html.Grid (from MVCContrib). It also stores the state of the search filters so that they can recreate themselves when the page reloads (Viewstate, I miss you! :0)  The class diagram for the container class is shown below.   Custom MVCContrib Grid The MVCContrib grid default behavior was overridden so that it would auto generate the columns and format the columns based on the metadata and also make it aware of our custom attributes (see MetaDataGridModel in the sample code). The Grid ensures that the ShowForDisplay on the column is set to true This can also be set by the ScaffoldColumn attribute ref: http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-2-modelmetadata.html) Column headers are set using the DisplayName attribute Column sorting is set using the OrderBy attribute. The data is formatted using the DisplayFormat attribute. Generic Extension methods for Sorting and Filtering The extension method AsFiltered takes in an IQueryable<T> and uses expression trees to query against the IQueryable data. The query is constructed using the Model metadata and the properties of the T filter (productFilters in our case). Properties in the Model that do not have the SearchFilter attribute are skipped when creating the filter expression tree.  It returns an IQueryable<T>. The extension method AsPagination takes in an IQuerable<T> and first ensures that the column being sorted on has the OrderBy attribute. If not, we look for the default OrderBy column ([OrderBy(IsDefault = true)]). We then build an expression tree to sort on this column. We finally hand off the call to the MVCContrib AsPagination which returns an IPagination<T>. This type as you can see in the class diagram above is passed to the view and used by the MVCContrib Grid and Pager components. Custom Provider To get the system to recognize our custom attributes, we create our MetadataProvider as mentioned in this article (http://bradwilson.typepad.com/blog/2010/01/why-you-dont-need-modelmetadataattributes.html) protected override ModelMetadata CreateMetadata(IEnumerable<Attribute> attributes, Type containerType, Func<object> modelAccessor, Type modelType, string propertyName) { ModelMetadata metadata = base.CreateMetadata(attributes, containerType, modelAccessor, modelType, propertyName);   SearchFilterAttribute searchFilterAttribute = attributes.OfType<SearchFilterAttribute>().FirstOrDefault(); if (searchFilterAttribute != null) { metadata.AdditionalValues.Add(Globals.SearchFilterAttributeKey, searchFilterAttribute); }   OrderByAttribute orderByAttribute = attributes.OfType<OrderByAttribute>().FirstOrDefault(); if (orderByAttribute != null) { metadata.AdditionalValues.Add(Globals.OrderByAttributeKey, orderByAttribute); }   return metadata; } We register our MetadataProvider in Global.asax.cs. protected void Application_Start() { AreaRegistration.RegisterAllAreas();   RegisterRoutes(RouteTable.Routes);   ModelMetadataProviders.Current = new MvcFlan.QueryModelMetaDataProvider(); } Bugs, Comments and Suggestions are welcome! You can download the sample code below. This code is purely experimental. Use at your own risk. Download Sample Code (VS 2010 RTM) MVCNorthwindSales.zip

    Read the article

  • Running ASP.NET Webforms and ASP.NET MVC side by side

    - by rajbk
    One of the nice things about ASP.NET MVC and its older brother ASP.NET WebForms is that they are both built on top of the ASP.NET runtime environment. The advantage of this is that, you can still run them side by side even though MVC and WebForms are different frameworks. Another point to note is that with the release of the ASP.NET routing in .NET 3.5 SP1, we are able to create SEO friendly URLs that do not map to specific files on disk. The routing is part of the core runtime environment and therefore can be used by both WebForms and MVC. To run both frameworks side by side, we could easily create a separate folder in your MVC project for all our WebForm files and be good to go. What this post shows you instead, is how to have an MVC application with WebForm pages  that both use a common master page and common routing for SEO friendly URLs.  A sample project that shows WebForms and MVC running side by side is attached at the bottom of this post. So why would we want to run WebForms and MVC in the same project?  WebForms come with a lot of nice server controls that provide a lot of functionality. One example is the ReportViewer control. Using this control and client report definition files (RDLC), we can create rich interactive reports (with charting controls). I show you how to use the ReportViewer control in a WebForm project here :  Creating an ASP.NET report using Visual Studio 2010. We can create even more advanced reports by using SQL reporting services that can also be rendered by the ReportViewer control. Now, consider the sample MVC application I blogged about called ASP.NET MVC Paging/Sorting/Filtering using the MVCContrib Grid and Pager. Assume you were given the requirement to add a UI to the MVC application where users could interact with a report and be given the option to export the report to Excel, PDF or Word. How do you go about doing it?   This is a perfect scenario to use the ReportViewer control and RDLCs. As you saw in the post on creating the ASP.NET report, the ReportViewer control is a Web Control and is designed to be run in a WebForm project with dependencies on, amongst others, a ScriptManager control and the beloved Viewstate.  Since MVC and WebForm both run under the same runtime, the easiest thing to is to add the WebForm application files (index.aspx, rdlc, related class files) into our MVC project. You can copy the files over from the WebForm project into the MVC project. Create a new folder in our MVC application called CommonReports. Add the index.aspx and rdlc file from the Webform project   Right click on the Index.aspx file and convert it to a web application. This will add the index.aspx.designer.cs file (this step is not required if you are manually adding a WebForm aspx file into the MVC project).    Verify that all the type names for the ObjectDataSources in code behind to point to the correct ProductRepository and fix any compiler errors. Right click on Index.aspx and select “View in browser”. You should see a screen like the one below:   There are two issues with our page. It does not use our site master page and the URL is not SEO friendly. Common Master Page The easiest way to use master pages with both MVC and WebForm pages is to have a common master page that each inherits from as shown below. The reason for this is most WebForm controls require them to be inside a Form control and require ControlState or ViewState. ViewMasterPages used in MVC, on the other hand, are designed to be used with content pages that derive from ViewPage with Viewstate turned off. By having a separate master page for MVC and WebForm that inherit from the Root master page,, we can set properties that are specific to each. For example, in the Webform master, we can turn on ViewState, add a form tag etc. Another point worth noting is that if you set a WebForm page to use a MVC site master page, you may run into errors like the following: A ViewMasterPage can be used only with content pages that derive from ViewPage or ViewPage<TViewItem> or Control 'MainContent_MyButton' of type 'Button' must be placed inside a form tag with runat=server. Since the ViewMasterPage inherits from MasterPage as seen below, we make our Root.master inherit from MasterPage, MVC.master inherit from ViewMasterPage and Webform.master inherits from MasterPage. We define the attributes on the master pages like so: Root.master <%@ Master Inherits="System.Web.UI.MasterPage"  … %> MVC.master <%@ Master MasterPageFile="~/Views/Shared/Root.Master" Inherits="System.Web.Mvc.ViewMasterPage" … %> WebForm.master <%@ Master MasterPageFile="~/Views/Shared/Root.Master" Inherits="NorthwindSales.Views.Shared.Webform" %> Code behind: public partial class Webform : System.Web.UI.MasterPage {} We make changes to our reports aspx file to use the Webform.master. See the source of the master pages in the sample project for a better understanding of how they are connected. SEO friendly links We want to create SEO friendly links that point to our report. A request to /Reports/Products should render the report located in ~/CommonReports/Products.aspx. Simillarly to support future reports, a request to /Reports/Sales should render a report in ~/CommonReports/Sales.aspx. Lets start by renaming our index.aspx file to Products.aspx to be consistent with our routing criteria above. As mentioned earlier, since routing is part of the core runtime environment, we ca easily create a custom route for our reports by adding an entry in Global.asax. public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}");   //Custom route for reports routes.MapPageRoute( "ReportRoute", // Route name "Reports/{reportname}", // URL "~/CommonReports/{reportname}.aspx" // File );     routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults ); } With our custom route in place, a request to Reports/Employees will render the page at ~/CommonReports/Employees.aspx. We make this custom route the first entry since the routing system walks the table from top to bottom, and the first route to match wins. Note that it is highly recommended that you write unit tests for your routes to ensure that the mappings you defined are correct. Common Menu Structure The master page in our original MVC project had a menu structure like so: <ul id="menu"> <li> <%=Html.ActionLink("Home", "Index", "Home") %></li> <li> <%=Html.ActionLink("Products", "Index", "Products") %></li> <li> <%=Html.ActionLink("Help", "Help", "Home") %></li> </ul> We want this menu structure to be common to all pages/views and hence should reside in Root.master. Unfortunately the Html.ActionLink helpers will not work since Root.master inherits from MasterPage which does not have the helper methods available. The quickest way to resolve this issue is to use RouteUrl expressions. Using  RouteUrl expressions, we can programmatically generate URLs that are based on route definitions. By specifying parameter values and a route name if required, we get back a URL string that corresponds to a matching route. We move our menu structure to Root.master and change it to use RouteUrl expressions: <ul id="menu"> <li> <asp:HyperLink ID="hypHome" runat="server" NavigateUrl="<%$RouteUrl:routename=default,controller=home,action=index%>">Home</asp:HyperLink></li> <li> <asp:HyperLink ID="hypProducts" runat="server" NavigateUrl="<%$RouteUrl:routename=default,controller=products,action=index%>">Products</asp:HyperLink></li> <li> <asp:HyperLink ID="hypReport" runat="server" NavigateUrl="<%$RouteUrl:routename=ReportRoute,reportname=products%>">Product Report</asp:HyperLink></li> <li> <asp:HyperLink ID="hypHelp" runat="server" NavigateUrl="<%$RouteUrl:routename=default,controller=home,action=help%>">Help</asp:HyperLink></li> </ul> We are done adding the common navigation to our application. The application now uses a common theme, routing and navigation structure. Conclusion We have seen how to do the following through this post Add a WebForm page from a WebForm project to an existing ASP.NET MVC application Use a common master page for both WebForm and MVC pages Use routing for SEO friendly links Use a common menu structure for both WebForm and MVC. The sample project is attached below. Version: VS 2010 RTM Remember to change your connection string to point to your Northwind database NorthwindSalesMVCWebform.zip

    Read the article

< Previous Page | 242 243 244 245 246 247 248 249 250 251 252 253  | Next Page >