English 中文(简体)
asp.net mvc automapper parsing
原标题:

let s say we have something like this

public class Person
{
   public string Name {get; set;}
   public Country Country {get; set;}
}

public class PersonViewModel
{
   public Person Person {get; set;}
   public SelectList Countries {get; set;}
}

can automapper be used to perform to parse from Person into PersonViewModel and back ?

最佳回答

Don t use AutoMapper for this - it s not worth it. For example, in the cases where you have a validation failure and you show the form again - AutoMapper is not executed here (usually). We usually go two routes:

  • If the list is not context-specific, create an HtmlHelper that queries some ISelectListProvider for the select list items: Html.DropDownList(). You d use your IoC container of choice to locate the personListProvider, query for the list of items, and populate the dropdown list.
  • If the list is context-specific, just construct the list in the controller action
问题回答

It sounds like you want to send a Person to the view via the PersonViewModel which has all the bonus info you need to generate and return a new (or updated) Person object.

If this is correct, I don t think you need automapper at all. From what I understand of automapper it is for mapping collection of related objects to a more view model type of state, but in this case, you are sending a Person to the client and trying to receive a Person back. In this case, it seems easier to use your view model to populate the page, but have the page return a Person instead (or extract the updated Person from the view model to save a few keystrokes).


EDIT: That being said, yes you should be able to use automapper to move the info around. Its just a unnecessary layer for this easy scenario.

if one chose to, you could do this:

public class Person
{
   public string Name {get; set;}
   public Country Country {get; set;}
   public Country[] GetCountries 
   {
    ... add method for countries here
   }
}

Then in your ViewModel you can have your select list pull data from that collection.

public class PersonViewModel
{
   public Person Person {get; set;}
   public Country[] Countries {get; set;}
   public SelectList Countries { get{ .. add new select list code here getting vals from Countries..}}
}

Again, this is for context sensitive lists. You are however muddling concerns a wee bit here (should a person get a list of countries?)





相关问题
WebForms and ASP.NET MVC co-existence

I am trying to make a WebForms project and ASP.NET MVC per this question. One of the things I ve done to make that happen is that I added a namespaces node to the WebForms web.config: <pages ...

Post back complex object from client side

I m using ASP.NET MVC and Entity Framework. I m going to pass a complex entity to the client side and allow the user to modify it, and post it back to the controller. But I don t know how to do that ...

Create an incremental placeholder in NHaml

What I want to reach is a way to add a script and style placeholder in my master. They will include my initial site.css and jquery.js files. Each haml page or partial can then add their own required ...

asp.net mvc automapper parsing

let s say we have something like this public class Person { public string Name {get; set;} public Country Country {get; set;} } public class PersonViewModel { public Person Person {get; ...

structureMap mocks stub help

I have an BLL that does validation on user input then inserts a parent(PorEO) and then inserts children(PorBoxEO). So there are two calls to the same InsertJCDC. One like this=>InsertJCDC(fakePor)...

ASP.NET MVC: How should it work with subversion?

So, I have an asp.net mvc app that is being worked on by multiple developers in differing capacities. This is our first time working on a mvc app and my first time working with .NET. Our app does not ...

System.Web.Mvc.Controller Initialize

i have the following base controller... public class BaseController : Controller { protected override void Initialize(System.Web.Routing.RequestContext requestContext) { if (...

热门标签