Леса MVC2 - не видно данных - PullRequest
       16

Леса MVC2 - не видно данных

1 голос
/ 28 сентября 2011

У меня проблемы с отображением каких-либо данных в приложении MVC2.

Я использую ваши стандартные настройки скаффолдинга, но когда я просматриваю страницу индекса или сведений, я вообще не вижу данных.

Я уверен, что здесь не хватает чего-то простого, так как я не получаю ошибок при компиляции или запуске.

Вот моя модель (Users.cs):

public class Users
{
    public string UserName { get; set; }

    [Required(ErrorMessage = "The Customer ID is required.")]
    public string CustomerID { get; set; }
}

Вот два действия контроллера (UsersController.cs), которые имеют значение:

public class UsersController : Controller
{

    static List<Users> users = new List<Users>();

    //
    // GET: /Users/

    public ActionResult Index()
    {
        return View(users);
    }

    //
    // GET: /Users/Details/5

    public ActionResult Details(Users u)
    {
        return View(u);
    }

}

А вот мои взгляды.

Users / Index.aspx

<table>
<% foreach (var item in Model) { %>

    <tr>
        <td>
            <%= Html.ActionLink("Edit", "Edit", new { id=item.UserName }) %> |
            <%= Html.ActionLink("Details", "Details", item )%> |
            <%= Html.ActionLink("Delete", "Delete", new { id = item.UserName })%>
        </td>
        <td>
            <%= Html.Encode(item.UserName) %>
        </td>
        <td>
            <%= Html.Encode(item.CustomerID) %>
        </td>
    </tr>

<% } %>

</table>

<p>
    <%= Html.ActionLink("Create New", "Create") %>
</p>

Users/Details.aspx

<fieldset>
    <legend>Fields</legend>

    <div class="display-label">UserName</div>
    <div class="display-field"><%= Html.Encode(Model.UserName) %></div>

    <div class="display-label">CustomerID</div>
    <div class="display-field"><%= Html.Encode(Model.CustomerID) %></div>

</fieldset>
<p>
    <%= Html.ActionLink("Edit", "Edit", new {  id=Model.UserName }) %> |
    <%= Html.ActionLink("Back to List", "Index") %>
</p>

Все страницы загружаются нормально, без ошибок, но данные не отображаются.Если я запускаю отладчик, в списке пользователей будет 0 записей.

Я использую SQL Server.Моя строка подключения находится в моем файле web.config обычным образом:

Моя база данных уже содержит пользовательские данные.Он был создан с помощью стандартного инструмента администрирования веб-сайта asp.net, который я использую для аутентификации.Это отлично работает.

Так что я делаю не так?Любая помощь приветствуется, и если мне нужно больше информации, пожалуйста, дайте мне знать.

1 Ответ

1 голос
/ 29 сентября 2011

Ваш UserController (как объясняется в комментарии к OP) создает список пользователей без данных.

Если вы хотите seed data, рассмотрите возможность изменения объявления следующим образом:

public class UsersController : Controller 
{ 

    // static List<Users> users = GetSeededData(); - 
    // don't store a list locally, it isn't necessary if you have a database
    // consider holding the context instead perhaps?
    protected MyContext context = new MyContext();

    // 
    // GET: /Users/ 

    public ActionResult Index() 
    { 
        return View(context.users.ToList()); 
    } 

    // 
    // GET: /Users/Details/5 

    public ActionResult Details(int userId) 
    { 
        return View(context.Users.SingleOrDefault(x => x.UserId.Equals(userId)); 
    } 

} 

Быстрое предложение относительно вашей "настойчивости" (игнорируйте это, если хотите, просто дружеский совет) ...

Подумайте о введении слоя стойкости .То есть, если вы хотите сохранить данные, рассмотрите возможность их сохранения в базе данных, файле XML и т. Д. Посмотрите здесь .Это отличный ресурс по MVC с множеством примеров и учебных пособий, и в середине раздела «Модели» он знакомит вас с Entity Framework, который может использоваться для хранения, извлечения и обновления ваших данных в базе данных довольно просто.

...