In my views I’m using a generic type for the Model, ItemModel<T>.
This allows me to have a basetype on my model and it works fine. Within ItemModel<T> I attach the actual entity of T to a property called ‘Item’.
Let’s say I’m loading a User item: in my view I would like to do something like this:
<%: Html.TextBoxFor(Model => Model.Item.NickName,
new { id="NickName", name="NickName" })%>
Because the entity is added via the Item property, this generates the input tag’s name attribute as ‘Item.NickName’. When posting, MVC can no longer relate this to the User.NickName property of the user object in my controller
public ActionResult Login(User user, string redirectUrl)
and therefore nothing gets loaded into my User object. Is there a way to fix this? I’ve been looking into writing a custom bindingmodel or valueprovider, but that looks like alot of work for something this simple. Plus, I’m really not sure if that’s that way to go.
All help is greatly appreciated!
change method of your actionresult from
To
this way modelbiner will be able to locate properties of User object prefixed with Item