So far I've seen demos of MVC that have simple pages, one for login, one for register, one for listing a table. In order to understand better the transition for WebForms developers into MVC patterns, I would like to understand how can I put together multiple CONTROLS (like the one provided by the default MVC project that VS2010 creates for us ...and make it work. OK so as an example, imagine we want to change the LogonUserControl.ascx to allow us to login (so to show UserName and Password textboxes and Logon button) from the Home Page.
1) We update the Control as follow:
2) We update the HomeController.cs file to handle the Logon Button Post event as follow:
We needed to move some code from AccountController to HomeController in order to get the control to work under the Index view. So ...with little luck it seems to work! Now the problem happens when you navigate to the Register view, considering that now we are not any longer on the HomeController "domain" but we are under AccountController. Register page shows perfectly and since the LogOnUserControl.ascx belongs to the MasterPage, it shows too. Since we are not logged yet, it will be displaying the UserName and Password textboxes. But we don't really care about that, because we are on the Register view and after populating the Register values, we click on the Register button. This is the error I get:
>>> To me that I come from the WebForms world, it seems like even if the event fired was the Register button (therefore under the AccountController domain), there is a kind of hidden OnInit event fired for any control on that view, in this case the Logon event. I'm sure this is NOT the case but the real question is... if we are allowed to have only one Controller x view, how can we put together controls that come from different "controller domains" and display them inside a single view?
Could I develop an eCommerce site using MVC that has the home page displaying different controls like [Most Purchased Product, Product of the Month, Special Promotions, Messages Inbox, Company Events ... and each control has it's own button to click and do something (so a proper POST request)] on the home page, unless I only have ONE single Controller which i'm not even sure if it will work or if it would make sense ....since MVC is all about separation of responsibilities.
I am trying to make pluginable architecture of asp.net mvc 3 application. I have some progress. But now i stopped on problem of strongly typed view whose the model compiled in assembly and not located in bin folder. So i load assemblies from places where modules located by MEF. Then i made my own ControllerFactory where i resolve types for controllers. And with controllers and actions everything is working. When i use custom view everything is great. But when I am rying to use strongly typed view I have an error
Compilation Error
Description: An error occurred during the compilation of a resource required to service this request.review the following specific error details and modify your source code appropriately.
Compiler Error Message: CS0246: The type or namespace name 'Admin' could not be found (are you missing a using directive or an assembly reference?)
I am integrating asp.net mvc with an existing asp.net web form application. All works well until I try and inherit my view from custom type.
[Code]....
Reference has been added to the assembly containing the above namespace to the web form project. I had manually create an aspx page since the mvc view templates are not available in web forms project. I guess the way view gets bound to the object by telling it where to inherit from or does asp.net mvc performs some hidden plumbing. There weird part was that I could not even bind it to IList<string>.
I have controller method that looks something like this:
[Code]....
notice the commented out line. This method used to return an IEnumerable<Sport> but now that I have used a LINQ query it is returning an IEnumerable of an anonymous type (I think that's the correct terminology - please correct me if I'm wrong).
Question I have is...can I add a strongly-typed view based on this anonymous type and if not, how do I write a view that can access this collection?
When I am creating Strongly Typed View I get lots of Classes in View Data Drop down. Classes like Automapper, ninject, Interface..., latebound... Due this its very hard to find my project classes. Is there any way to restrict dropdown to only display my project classes?
I have an application that is going to allow a user to create records of type Customer and Seller that have one section in common, but other fields that are unique to their types.
Both of these types will have an address block for their create view.
If I have a strongly typed Customer or Seller view, how can I use the view partial (containing the address block) that I've created? I've tried creating a view model, but I don't know how to have the create page inherit the Customer model and the addressBlock partial inherit the addressBlockForm partial model...
Long story short, I'm trying to add a few extra items to ViewData to make my life easier, and its an edge case that doesn't really justify its own model just for this one case. Keep reading for more specific details.
So I have a strongly typed edit view for one of my objects, everything works great until I try to put a dropdownlist on the view with an ID that does not match a property of my class.
I have this
[code]....
My expectation is that in the controller action that accepts the POST, I will manually use the FormCollection[] to read out that ID and populate MyOtherModel with the correct ID.
How much time is spent compiling a view in ASP.NET?Of course I don't expect anyone to give me a number, but I think it's interesting to have an idea of how much time this takes because it could influence the way we implement things.For example, if the time is significant , then I might try to put every result that I need to display in the view in a model class instance (created just to hold the values in such a way that I don't even have to test for objects with null value) and then minimize to the maximum (uh?) the amount of C# code in the view thus decreasing the amount of time necessary to compile the view.Question Does this make sense? Give some thoughts on this one.
Can my strongly typed view use a generic with a constraint? The type I want to pass to the view is
RoleGrantedToPerson<T> where T: Aggregate I don't know what T is at design time, only that it is a child of the base class 'Aggregate' I have tried using
I am not sure why this happens, but when I have an Html.TextBoxFor(model => model.SomeObject.SomeProperty), when I post, the property of that object is always null.
When I look at the markup generated, I see <input type="text" name="SomeObject_SomeProperty" id="SomeObject.SomeProperty" value = "" />
If I change the helper to Html.TextBoxFor(model => model.SomeObject.SomeProperty, new {id = "SomeProperty"}) the controller is then able to pick the value up. Why is this happening? I feel as though I shouldn't have to be specifiying the id for the textbox as it works when fine when not using child objects on a view model, IE <%: HtmlTextBoxFor(model => model.SomeProperty) %>.
public class MyViewModel { public MyObject myObject{ get; set; } public List<MyList> myList{ get; set; } }
I have a view with a form strongly typed to MyViewModel This view allows you to enter values for the properties of MyObject, as well as create a list of MyList objects. The List part works fine although I thought that would be the more difficult of the two. Assuming MyObject has a property Description I create a textbox to enter the value as such:
@Html.EditorFor(x => x.myObject.Description); The text box renders with an id of MyObject_Description...The problem is when I post this to my controller action, MyObject does not get bound at all(althought the list items do as they recieve the appropriate IDs of "MyViewModel_MyList[guid].myListValue") What am I doing wrong here?? EDIT: more info The first line of the view is: @model MyApp.ViewModels.MyViewModel And the Action method: [HttpPost] public ActionResult Create(MyViewModel myViewModel) { } I am passing a new MyViewModel into the partial view to begin... public ActionResult Create() { MyViewModel model = new MyViewModel(); return PartialView(model); } EDIT 2 Ok When I render my partial view that contains the forms I call : @{Html.RenderAction("Create", "MyController");} this is called from within a View of type @model IEnumerable<MyApp.Models.MyObject> (this view displays a list of currently existing MyOjects, and at the bottom the partial is rendered to allow the user to add another MyObject to the DB)
I would like to know how i can bind my form values to my strongly typed view from a MultiSelect box. Obviously when the form submits the multi-select box will submit a delittemered string of my values selected...what is the best way to convert this string of values back into a list of objects to attach to my model to be updated?
public class MyViewModel { public List<Genre> GenreList {get; set;} public List<string> Genres { get; set; } }
When updating my model inside the controller i am using UpdateModel like below: Account accountToUpdate = userSession.GetCurrentUser(); UpdateModel(accountToUpdate);
However i need to somehow get the values from the string back into objects. I beleive it may have something to do with model-binders but i can't find any good clear examples of how to do this.
Then I have page that would has a list of ForumPost(s) and and edit option, all on one page. To achieve this I've created a CommentsViewModel that extends "ForumPost" class like so:
[Code]....
This way on my view I can have a list of ForumPost(s) and a form that would edit the post.This is what i see in the debug mode right before the save call:The problem is that when I try to Save/Update I get the following error:I already tried doing this:
[Code]....
with no luck. for some reason downcasting doesn't work and the model or row are still of type CommentsViewModel instead of ForumPost
I try to use HtmlHelper.TextBoxFor with spark view engine but view crashed with exception "Dynamic view compilation failed. 'System.Web.Mvc.HtmlHelper' does not contain a definition for 'TextBoxFor' and no extension method 'TextBoxFor' accepting a first argument of type 'System.Web.Mvc.HtmlHelper' could be found(are you missing a using directive or an assembly reference?)".
It is my _global.spark: <use namespace="System"/> <use namespace="System.Linq"/> <use namespace="System.Text" /> <use namespace="System.Web.Mvc"/> <use namespace="System.Web.Mvc.Html"/> <use namespace="System.Web.Routing"/> <use namespace="System.Linq.Expressions" /> <use namespace="MyModels" /> In spark-view using: ${Html.TextBoxFor(m => m.UserName)}
Note: I'm working with MVC3 RC and Razor views.I've got this model:
[Code]....
I want to have a strongly typed create view for this model, that allows you to insert 1 to many addresses and phone numbers as part of the view. Ideally, the Action is strongly typed as well:
[Code]....
What would this view look like to facilitate creating 1 to many Addresses and PhoneNumbers, as well as having the state re-created correctly if the ModelState fails when posting? I've tried a number of variations including EditorTemplates and can't figure out how to do this.
I've got a problem with ASP.NET mvc stongly typed helpers.Here is example of wrong behavior:
[Code]....
will generate following inputs:
[Code]....
As you see generated name is wrong, because of wrong algorithm of extracting property name from lambda.The only way to avoid this bug is to create PartialView and pass item as its context.May be somebody knows other solutions? Do you consider it a bug or right behavior?
When I send a strongly typed ViewModel containing other ViewModels nested inside (basically spanning 3 tables into one object) all the data is correctly presented when debugging. However it complains at rendering time with an exception "Compiler Error Message: CS1061: 'object' does not contain a definition for 'Name' and no extension method 'Name' accepting a first argument of type 'object' could be found (are you missing a using directive or an assembly reference?)"
and the error is thrown from mvc2-rtm-sourcessrcSystemWebMvcMvcViewPageControlBuilder.cs method: ProcessGeneratedCode line 19