ASP.net MVC4: à l'Aide d'un autre modèle dans une vue partielle?

Je suis juste d'apprentissage ASP.net MVC donc excusez-moi si je suis mal à expliquer mon problème.

Est-il possible d'utiliser un autre modèle dans une vue partielle de ce qui est hérité de la vue?

Mon point de vue Index hérite actuellement LoginModel, qui traite avec l'autorisation des utilisateurs. Une fois qu'un utilisateur est autorisé, je veux le Index pour afficher la liste des todos de l'utilisateur. todos sont récupérées via LINQ.

Donc ma vue partielle veut hériter System.Web.Mvc.ViewPage<IEnumerable<todo_moble_oauth.Models.todo>>, mais j'obtiens une erreur lorsque j'utilise ceci: "Le modèle de l'élément passé dans le dictionnaire est de type

System.Data.Linq.DataQuery`1[todo_moble_oauth.Models.todo]', but this dictionary requires a model item of type 'todo_moble_oauth.Models.LoginModel'

C'est mon Index vue

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<todo_moble_oauth.Models.LoginModel>" %>

<section id="loginForm">
    <% if (Request.IsAuthenticated) { %>

        <% Html.RenderPartial("_ListTodos"); %>

    <% } else { %>

        <h1>Todo Mobile</h1>

        <blockquote>Easily store your list of todos using this simple mobile application</blockquote>

        <% using (Html.BeginForm()) { %>
            <%: Html.AntiForgeryToken() %>
            <%: Html.ValidationSummary(true) %>

                    <%: Html.LabelFor(m => m.UserName) %>
                    <p class="validation"><%: Html.ValidationMessageFor(m => m.UserName) %></p>
                    <%: Html.TextBoxFor(m => m.UserName) %>

                    <%: Html.LabelFor(m => m.Password) %>
                    <p class="validation"><%: Html.ValidationMessageFor(m => m.Password) %></p>
                    <%: Html.PasswordFor(m => m.Password) %>

                    <label class="checkbox" for="RememberMe">
                        <%: Html.CheckBoxFor(m => m.RememberMe) %>
                        Remember Me?
                    </label>

            <input type="submit" value="Login" />
        <% } %>
    <% } %>
</section>

Ma vue partielle _ListTodos est comme suit:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<IEnumerable<todo_moble_oauth.Models.todo>>" %>

<% foreach (var item in Model) { %>
      <%: Html.DisplayFor(modelItem => item.title) %>
      <%: Html.DisplayFor(modelItem => item.description) %>
<% } %>

Mon LoginModel est la suivante:

public class LoginModel
{
    [Required]
    [Display(Name = "User name")]
    public string UserName { get; set; }

    [Required]
    [DataType(DataType.Password)]
    [Display(Name = "Password")]
    public string Password { get; set; }

    [Display(Name = "Remember me?")]
    public bool RememberMe { get; set; }
}

La HomeController Index() méthode:

    [AllowAnonymous]
    public ActionResult Index()
    {
        //if user is logged in, show todo list
        if (Request.IsAuthenticated)
        {
            //var currentUser = Membership.GetUser().ProviderUserKey;
            todosDataContext objLinq = new todosDataContext();
            var todos = objLinq.todos.Select(x => x);
            return View(todos);
        }
        return View();
    }

Toute aide est grandement appréciée, merci.

OriginalL'auteur Neil | 2013-05-22