ASP.Net MVC - Models and User Controls

Posted by cdotlister on Stack Overflow See other posts from Stack Overflow or by cdotlister
Published on 2011-01-15T05:39:24Z Indexed on 2011/01/15 5:53 UTC
Read the original article Hit count: 176

Filed under:
|
|

Hi guys,

I have a View with a Master Page. The user control makes use of a Model:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<BudgieMoneySite.Models.SiteUserLoginModel>" %>

This user control is shown on all screens (Part of the Master Page). If the user is logged in, it shows a certain text, and if the user isn't logged in, it offers a login box.

That is working OK.

Now, I am adding my first functional screen. So I created a new view... and, well, i generated the basic view code for me when I selected the controller method, and said 'Create View'.

My Controller has this code:

        public ActionResult Transactions()
    {
        List<AccountTransactionDetails> trans = GetTransactions();
        return View(trans);
    }

    private List<AccountTransactionDetails> GetTransactions()
    {
        List<AccountTransactionDto> trans = Services.TransactionServices.GetTransactions();

        List<AccountTransactionDetails> reply = new List<AccountTransactionDetails>();

        foreach(var t in trans)
        {
            AccountTransactionDetails a = new AccountTransactionDetails();
            foreach (var line in a.Transactions)
            {
                AccountTransactionLine l = new AccountTransactionLine();
                l.Amount = line.Amount;
                l.SubCategory = line.SubCategory;
                l.SubCategoryId = line.SubCategoryId;
                a.Transactions.Add(l);
            }
            reply.Add(a);
        }


        return reply;
    }

So, my view was generated with this:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<System.Collections.Generic.List<BudgieMoneySite.Models.AccountTransactionDetails>>" %>

Found <%=Model.Count() %> Transactions.

All I want to show for now is the number of records I will be displaying.

When I run it, I get an error:

"The model item passed into the dictionary is of type 'System.Collections.Generic.List`1[BudgieMoneySite.Models.AccountTransactionDetails]', but this dictionary requires a model item of type 'BudgieMoneySite.Models.SiteUserLoginModel'."

It looks like the user control is being rendered first, and as the Model from the controller is my List<>, it's breaking!

What am I doing wrong?

© Stack Overflow or respective owner

Related posts about c#

Related posts about asp.net-mvc