In Model-View-Presenter what is the correct pattern to do a page that: a) contains a grid for browsing a list of items
b) an alternate mode for editing single items .maybe you are toggling between two asp:panels.
Do you just make the presenter smart enough to do two types of presentations? Make 2 presenters?
I'm new to this pattern and want to do it correctly. I understand how I would do this functionality on two pages. Just not sure what is the accepted practice when the browse and detail exist on the same page.
I'm using Model-View-Presenter framework. When Loading a page, I'm having trouble setting the selected item that came from the Database.
In view, I know I need:
protected void ddlStatus_SelectedIndexChanged(object sender, EventArgs e) { presenter.DdlStatusSelectedIndexChanged(); // what should this pass? } Then in Presenter: public void DdlStatusSelectedIndexChanged() { view.DdlStatus = ??? // Should I pass the SelectedIndex? }
I also think that part of my problem is that DdlStatus I have as a List.
Interface:
List<StatusDTO> DdlStatus { set; get; }
The best I found is here (but needs formatted!) ---> [URL]
I've been used to decorating data model classes with data annotation attributes, but the purist in me baulks slightly at including purely presentational attributes such as display format here. I am, however, quite happy to keep validation centric attributes here. One good reason I have to continue keeping all annotations etc. in the data model is that my view model aggregates data model classes, e.g.
my ViewModelBase.DetailItem<TEntity> property in the view model is just a reference to an entity class in my data model. If I wanted to move presentational annotations to the view model, I would have to quite radically revise my design to one where I duplicate data model properties in my view model and use an object mapping tool to populate view model objects based on data model objects.
Say I got a domain model as follows: (and my repository expect an instance of this object)
[Code]....
And a view model (which my views are based on)
[Code]....
At the moment I got it like this and have my controller action manually create a new Person object from the PersonModel object before passing it on to the repository, which does not feel right.
So I tried to have PersonModel inherit from Person and pass that to the repository (also tried casting the PersonModel to a Person object first), but that don't work out.
What's the right way to have PersonModel automatically cast to Person? I want to keep this logic as my current structure allow me to keep things really loosely coupled, with the repository layer not having a clue how it's being used.
I have an entity object as model input in my view. Not sure if it's the best approach, but I use the object references to get values from a related object.Let's say I've got a car entity and a manufacturer entity.Here's how it would look in my view
[Code]....
I've get a nullreferenceexception where the car entitity does not have a reference towards manufacturer. I'd like to output a " " if no manufacturer exists.
've created a Search partial view and it works, except for my view model. What i mean is, the partial view sends a string to my ActionResult Method, but only a string, that is not related to the view model that the partial view is built in. If i tell my ActionResult method to receive the view model in which the partial view is built in, it always tells me that i have null values. Here's my code This is my partial view:
[Code]....
Now here is my Model in my MoviesSearch view model:
one thing that has been puzzling me since learning MVC2 is the following case scenario: I have a view which contains two latest news lists, a login form and a signup form. Every example I found on Views and View Models so far has a one-to-one example such as a simple login form etc. But how do I create a model that provides the properties and validation for a login and signup form and manages the data for the news lists. can I pass multiple models in the strongly typed view? When I created one model the form validation would fail as it expects all fields - login and signup to be filled. I am missing some advanced examples or information.
making my first steps with asp.net mvc and I actually create a (very) small website.I have 1 controller : TasksController1 view : Tasks/Index.aspx1 Partial View : Tasks/AvailableSorting.ascx In my controller I have 2 methods :
[Code]....
In my Tasks/Index.aspx, I add my partial view (<% Html.RenderPartial("AvaliableSorting"); %>)
That sounds simple. But, It just doesn't work : the Index return a list of Task and the parial view (should) return a list of string.The index.aspx works perfectly, but the partial view doesn't get the right model ! he gets the model of the Index page (list of Task).
I would like to add a partial view to my view page
The view page contain a mode name "<IEnumerable<JvTake1.Models.VortN>>
And the partial view contain a model name "<IEnumerable<JvTake1.Models.VideoL>>" So, theoretically I think they were suppose to work together but no Can any one guide me how to make it happen?
I am totally a new bee in asp.net mvc. Let me now explain my issue. I have a strongly typed view which inherits from a view model Document. I want to have a partial view in that view itself. My code for this purpose is :
I have a view that is not strongly typed. However I have in this view a partial view that is strongly typed.How do I do I pass the model to this strongly typed view?I tried something like
public ActionResult Test() { MyData = new Data(); MyData.One = 1; return View("Test",MyData) }
In my TestView
<% Html.RenderPartial("PartialView",Model); %>
This give me a stackoverflow exception. So I am not sure how to pass it on. Of course I don't want to make the test view strongly typed if possible as what happens if I had like 10 strongly typed partial views in that view I would need like some sort of wrapper.
I have a ViewModel class: "MainPage" which contains 2 properties: Title, Id.I have a controller which prepares a list of MainPage and sends it to the view:
public ActionResult SideMenu() { MainPageDal dal = new MainPageDal(); DataTable dt = new DataTable(); dt = dal.GetArticlesList(); List<MainPage> mainPageList = new List<MainPage>(); MainPage mainPage; foreach (DataRow row in dt.Rows) { mainPage = new MainPage(Convert.ToInt16(row["Id"]), row["Title"].ToString()); mainPageList.Add(mainPage); } return View(mainPageList); }
In my view I do: <% foreach (var mainPage in Model) { %>
Now I added "List<String> myList=new..." into my MainPage class and tried to do foreach like this:
Why I can't do: <% foreach (var str in Model.myList) { %>
myList is a list of string inside MainPage.The error I get is:
c:devMvcTestMvcTestViewsHomeSideMenu.aspx(12): error CS1061: 'System.Collections.Generic.IEnumerable<MvcTest.ViewModels.MainPage>' does not contain a definition for 'myList' and no extension method 'myList' accepting a first argument of type 'System.Collections.Generic.IEnumerable<MvcTest.ViewModels.MainPage>' could be found (are you missing a using directive or an assembly reference?)
In my controller I UpdateModel(model). That works. I'm getting the model from the view.I save the fields of the model to a business entity and save the entity through a business layer to my database. The business layer returns a unique record id which I store in my model. Then I pass the model to the View.
return View(model);
After the View loads the Model in the View has not been updated. The unique record id has not been changed. I have been at this for four hours and I'm not getting anywhere. I have been trying to convert a windows forms project to MVC2 for six weeks and it just gets more and more frustrating. None of the tutorials on the MS site or the Microsoft book I have answer any of my questions.
Suppose i have a Product and Category Model, In add new product page i want to list all categories in a listbox. For this purpose i require to have Product and Category model available to Add New Product Page View.
I have a partial view called experience that is basic html markup.
I have a page that contains rows of records (experience records) and one of the columns in these rows is an "edit" link column. When I click that link I want to pass the id of that row to a method that will package up the details of that row (linq query to the experience table using the passed in id).
(this is the important part) ...... I want the partial view (experience.ascx) along with its new Model containing the experience details to load in a modal dialog box rather than another page.
So here is what I would like to do. Lets say I have a view that can do multiple things, and thus talk to several different controllers. For example, it might create a new group, or change the name of an existing group, or add a user to some group. Now, for the view to display correctly, it would only need the username, a list of groups, and possibly a list of users. Yet for the controllers to work they would need a different set of information, the userid to be added to a group, the name of a new group, or the name and id of a group to edit.
With this setup, there would be a potential of several different models for both input to the view, and output to the different controllers. I like the idea of using the helpers Html.Textboxfor() ect. to create the different submission elements, but I don't so much like the idea of having one giant model (Even if it just a model that inherits or has several sub models) that gets passed around everywhere for this view. It seems...
Perhaps there is a better way to do this (if so, feel free to smacking me around with a few "Your and idiot"s) but is there any way to have a separate input and output model for a view?