C# - Manually Instantiate Controller Instance From Arbitrary URL?
Jan 14, 2010
My skills are failing me, and I know I've seen the code around for this but I can't find it. What's the quickest way to take any arbitrary URL, run it through your asp.net mvc routing system, and come out with a reference to a controller instance on the other end?For example, code execution is inside some arbitrary controller method. I want to do something like this:
...
string myURL = "[URL]";
RouteData fakeRouteData = new RouteData(Route???, IRouteHandler???)
RequestContext ctxt = new RequestContext(this.ControllerContext.HttpContext,
fakeRouteData);
ControllerFactory factory = ControllerBuilder.Current.GetControllerFactory();
Controller result = factory.CreateController(ctxt, controllername???)
I'm trying to get an instance of a controller just like the routing system does, regardless of where the code is executing. I'm unclear as to how to fit the pieces together at this point.
Is it possible to instantiate an HtmlHelper object in a controller action in order to call HtmlHelper.EditorFor?
I would like to call HtmlHelper.EditorFor to return some partial html generated by an editor template in response to an ajax call. If I can do so I would not need to create an ascx file that otherwise would do the call to EditorFor.
On the client I want to instantiate an instance of an entity (that has a datacontract on the server side), send it to the server, let the server modify it in some way, and send it back. I'm talking about using standard-issue, ordinary WCF objects with DataContract/DataMember attributes.
The only way I could figure out to accomplish the above is to pass the object by reference. Is there another way?
In researching this, I found the links below, one of which says it is not possible to pass by ref (yes I realize we are passing a copy, but it is the result I'm interested in. Perhaps that is what the author is alluding to??).
Sorry for having to ask this but I'm confused (again).
I referenced(Web Reference) a web service on my PC for my Asp.net project in Visual Studio 2005. The name of my web service is "Condotti". How do I instantiate/consume it? The compiler does not recognize it if I try and do something like this:Condotti = new Condotti(); // Compiler error?
I'm building a web app that assembles output on the fly, and I'm trying to find the right way to instantiate HtmlGenericControl to create a DIV tag. By default, instantiating creates a SPAN tag. Anyone know how to use it so it creates a DIV?
I am inside the codebehind of videolist.aspx and I can not instantiate a copy of the masterpage. Ive noticed that there are no namespaces around the masterpage or the control is this normal? It is a website project. I am used to working on compiled web applications .net 1.1 style.
For the record I was able to 'see' the master page from .aspx pages but not from these controls. I cant getit through intellisense or even if I hard code and compile I get errors.
UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development, that follows the UP(Unified Process). It uses a Grasp Controller pattern to interact with domain classes by some methods like NewSale(), AddNewItemToSale() and CloseSale. In windows form, I can instantiate a object of this class in the UI and then use its methods to perform the actions. This works well in Client apps, but when I use asp.net mvc, I cannot find a way to instantiate an object (one for each user) that was always visible for a Controller (MVC). I cannot insert as an attribute inside Controller because it always create a new one.
I am looking for some adivce about the possbility of doing the following while working whith MVC. Firstly sorry if the subject line is not very descriptive. I have put something together in ASP WebForms where by I can put a few core fields on my page that identify an object, e.g. a Name and ID... and then I can add arbritrary fields to the aspx page that are now saved and retrieved with the "owning object". These extra fields are stored in a seperate table on the database to the primary object fields. A short explanation of how this works:
1. I have my own version of TextBox (and other input controls) called r3d:TextBox (etc.) and this text box has XmlParent and XmlElement tags, this is done by way of an interface.
2. I have a r3dBase page that all my forms inherit from and this page check for the existstance of any r3d:TextBox (and other input controls) that have the XmlParen and XmlElement tag defiened.
3. When an iheriting form is saved the controls with the Xml tags defined are also saved, but I don't have to change any code in the code behind pages. The framework I have put in place takes care of this for me. The data is saved
4. When an inheriting page is loaded all controls with the XmlParent and XmlElement tags are populated with any data that has previously been saved for them that belong to the main object being displayed on the page.
This provides for a nice easy way for me to extend my forms with non core data when clients request new fields. It also means that different clients can request different new fields and I don't have to make any modifications to the core objects. I have another mechanism that determins what fields are seen by which clients.
Anyway I am completely new to MVC (not written a single line of code) so I have no idea as to whether this paradigm will lend itself to the above described mechanisms or not. Does any one have anythoughts about this, approaches I might try to achive the above to of functionality or perhaps completely different suggestions that would achive a similar end that might work well with MVC
We have a web portal product from which we customize portals from customers. We use the precompiled web app and create a virtual directory (vd) where the customization resides. In addition to this we do some changes web.config in the web app folder. We would obviously like to keep these customizations under TFS source control.
When I try to add the precompiled web app (which I don't want to add to source control), a warning tells me that the vds cannot be added. If I only add the folder that is referenced to by the vd, I lose the references to assemblies in the precompiled web app.
My questions are:
How do I structure a solution for adding IIS (sub application level) virtual directories and still retain the references to assemblies? Is it possible to add other directories/files from the web application level (like App_Theme, web.config etc.) to the solution?
Since we already use Visual Source Safe, we have established a tree structure for each customization project:
Project Root | |-Custom Sql | |-Custom Portal Files (which is added as a virtual directory) | |-Other Customizations
I could probably do a lot of this manually through the source control explorer, but I'd like to have everything done through a solution.
I've followed the instructions using this article: [URL], but this doesn't address the exact problem that I have. Oh, and we are currently using Visual Source Safe for portal customizaton, but are eager to make the move to TFS.
Given an instance of an HttpContext object, is there a way to determine the CurrentCulture and/or CurrentUICulture for the thread it is executing on? Or more generally, is there a way to gain access to the current thread under which it is running?
Is it possible to say something to the effect of 'SomeClass.Out.WriteLine("hello world")' and have it actually show up for the browser to render? I ask, because I notice that the HtmlHelper BeginForm implements IDisposible. So at the end of the using block, a closing tag is written to the browser.I am not saying I would use this practice, as it seems like a bad idea, but I just want a better understanding of what is going on under the hood of C# ASP MVC.
I'm looking for a good way to add arbitrary properties to the objects in a strongly typed list, based on the principle that I shouldn't pass a DataTable from my business layer to my presentation layer.For example, I might have a Category class with the properties CategoryId and Title. On one page I would like to fetch a list of all categories (ie. List<Category>) together with the most expensive product in each category.A while ago, I would have just returned a DataTable with some additional columns in it with the product data in, but I'm trying not to do that -- it would be trivial to set up it's not good practice. One option is to add a MostExpensiveProduct property to my Category class, but I might want to display the most recently added product in another case, or the cheapest product, so I'd end up adding a lot of properties to cover all the options. This just doesn't feel right to me.Am I missing a trick here? What is the best way of doing this? Or should I just be returning a DataTable to which I can add as many columns as I need and not worry about it?
Is it possible to set the Inherits attribute of an ASPX Page directive to a class in an arbitrary assembly?
I need to modify an ASP.NET (1.1) application for which the source code was lost. In a new assembly (foo2.dll) I've created a replacement code-behind class that derives from the original class in the site's code-behind assembly (foo.dll). It seems easy enough to set the Inherits attribute of the Page directive to the new class name, but when I do that the web server gives me Could not load type 'Foo2.checkout2'. I am referencing the new assembly in the <assemblies> section of Web.config.
I don't see anything in the documentation to indicate that this scenario is unsupported, but I'm not certain that it is, either.
vs asp2008 instance cant recognize the sqlExpress 2008 instance on my machine
I have wonder if you could try to help me with the fallowing issue:When trying to add a new sql server connection (local or remount) from VS(visual studio) 2008 express - on the add connection dialog
box: server name: are Empty!! The vs couldn't point to any database, like dont recognize the sqlExpress 2008 instance i got on my machine.
1. Have tried to "play" with sa property's(from sqlS: Databases: security: login tree folder) and with the sql
s windows service: stop and restart 2. And so with the target db. 3.
On the services.msc The sql server express the status is started. The sql server agent status is disabled and don't have the option to start. The sql server explorer status is disabled and don't have the option to start.
I want to write own control which can contain other. And I want to define content of the control in the .aspx file where the control is defined. I have written such control. But now I have issue with ViewState of inner controls of my control. The following samle illustrates the issue: I defined two asp:DropDownList ID="ddl1" and ID="ddl2" One of them is inside of my control and other is outside. When posback is occurred asp:DropDownList ID="ddl1 loses state and becomes empty. How to say ASP.net to store state of inner controls defined by this way?
MyControl.ascx:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="MyControl.ascx.cs" Inherits="DynamicControls.Controls.MyControl" %>
my MVC2 delete and only my delete controller is refusing to return any class information. Its really similar to my edit function and the views are all auto-generated so I don't see the problem.
Function Delete(ByVal id As Integer) As ActionResult
I have a simple model where a Person has Gifts. I have a view which is a list of Gifts belonging to one Person.
My problem is with the Create action for a new Gift. I want it to default to the PersonID that we are already viewing the list of Gifts for. I tried simply passing the last PersonID (they are all the same)
Html.ActionLink("Create New", "Create", new { id = Model.Last().PersonID }) which works fine if there is already at least one Gift for that person but if this is the first Gift I don't have a value.
My Gift List controller knows the PersonID I want to pass but the view doesn't.
How do I pass this PersonID from my Gift List controller to my Gift Create controller via the Gift List view? Or is there a better way to do this?
I have a filter on my MVC web site. I display some records in a few different controller actions but when moving from one action to another I want to apply those filter values.
How can I persist values from controller to controller?
Should I use Session? TempData?
I am using Structure Map for IOC.
Maybe I could have a class that contains a Property for each Session Value that I use in my application and inject it on the controllers that need session?