代码之家  ›  专栏  ›  技术社区  ›  Pinu

传递到字典的asp.net mvc模型项的类型为List

  •  0
  • Pinu  · 技术社区  · 15 年前

    基于提供的id的ilist用户。我遇到了以下错误:

    传入词典的模型项的类型为“System.Collections.Generic.List”“1[Data.User]”,但此词典需要类型为“Data.User”的模型项。

    <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<Data.User>" %>
    <% using (Html.BeginForm()) 
    {%> <%= Html.ValidationSummary(true) %>            
    <fieldset> 
    
     <legend>Fields</legend>                
                    <div class="editor-label">
                        <%= Html.LabelFor(model => model.Id) %>
                    </div>
                    <div class="editor-field">
                        <%= Html.TextBoxFor(model => model.Id) %>
                        <%= Html.ValidationMessageFor(model => model.Id) %>
                    </div>                
                    <div class="editor-label">
                        <%= Html.LabelFor(model => model.UserName) %>
                    </div>
                    <div class="editor-field">
                        <%= Html.TextBoxFor(model => model.UserName) %>
                        <%= Html.ValidationMessageFor(model => model.UserName) %>
                    </div>
    
                    <div class="editor-label">
                        <%= Html.LabelFor(model => model.Email) %>
                    </div>
                    <div class="editor-field">
                        <%= Html.TextBoxFor(model => model.Email) %>
                        <%= Html.ValidationMessageFor(model => model.Email) %>     
    
         public ActionResult EditUser(int id)
                {
    
                        var usr = _UsrService.GerUserById(id).ToList<User>();                
                        return View(usr);
                }
    
    3 回复  |  直到 15 年前
        1
  •  1
  •   Chase Florell    15 年前

    不能将列表传递给要显示单个项的模式。

    尝试删除 .ToList<User>

    Data.User usr = _UsrService.GetUserById(id).FirstOrDefault;
    return View(usr)
    
        2
  •  0
  •   womp    15 年前

    Data.User . 您的操作方法正在尝试通过将 List<User>

    由于看起来您只想显示一个用户,请尝试更改操作方法以只显示一个用户,如下所示:

     public ActionResult EditUser(int id)
     {
    
        var usr = _UsrService.GerUserById(id).FirstOrDefault();                
        return View(usr);
     }
    

    我假设 GerUserById(id) IEnumerable 某种程度上,因为你打电话给 ToList<> 方法。这意味着即使它是一个项目的列表,您仍然需要从中取出对象,因此调用 FirstOrDefault() 会给你比赛的第一个结果 .

        3
  •  0
  •   StriplingWarrior    15 年前

    假设您的系统中只有一个用户具有给定的ID(这是ID的一种定义), _UsrService.GerUserById(id) 应更改为返回 User List<User> . 然后你的控制器就可以说:

    return View(_UsrService.GetUserById(id));