строго типизированная модель / требуется вывод в формате модели - PullRequest
0 голосов
/ 25 сентября 2011

На самом деле я новичок в этой технологии, я использую архитектуру MVC2.Я не могу загрузить данные из моей модели для просмотра страницы.я использовал строго типизированную модель EventListing.Models.EventInfo.Мне нужен вывод в формате модели.Как я могу использовать мою функцию выбора

Модель

public class EventInfo  
    {            
        public int OPR { get; set; }
        public int EVENT_ID { get; set; }
        public string  SUBSITE { get; set; }
public static DataTable Select()
        {
            DataTable myDataTable = new DataTable();
            Dbhelper DbHelper = new Dbhelper();
            DbCommand cmd = DbHelper.GetSqlStringCommond("SELECT * FROM WS_EVENTINFO");
            myDataTable.Load(DbHelper.ExecuteReader(cmd));
            return myDataTable;
        }

Контроллер

public ActionResult List()
        {            
            return View(EventModel.EventList());
        }

Вид

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<EventListing.Models.EventInfo>" %>
<% foreach (var model in EventListing.Models.EventModel.EventList())
                   { %>
                <tr>
                    <td>
                        <%= Html.ActionLink(model.TITLE, "Detail", new { id = model.EVENT_ID })%>

1 Ответ

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

Позвольте мне немного очистить ваш код:

public class EventInfo  
{            
    public int OPR { get; set; }
    public int EVENT_ID { get; set; }
    public string SUBSITE { get; set; }

    ... some other properties that you might want to use

    public static IEnumerable<EventInfo> Select()
    {
        var helper = new Dbhelper();
        using (var cmd = helper.GetSqlStringCommond("SELECT * FROM WS_EVENTINFO"))
        using (var reader = helper.ExecuteReader(cmd))
        {
            while (reader.Read())
            {
                yield return new EventInfo
                {
                    OPR = reader.GetInt32(reader.GetOrdinal("OPR")),
                    EVENT_ID = reader.GetInt32(reader.GetOrdinal("EVENT_ID")),
                    SUBSITE = reader.GetString(reader.GetOrdinal("SUBSITE"))
                }
            }
        }
    }
}

, затем в действии контроллера:

public ActionResult List()
{
    var model = EventInfo.Select().ToList();
    return View(model);
}

и, наконец, в представлении:

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

<% foreach (var item in Model) { %>
<tr>
    <td>
        <%= Html.ActionLink(item.TITLE, "Detail", new { id = item.EVENT_ID }) %>
    </td>
...

Следующее улучшение, которое должно быть сделано в этом, состоит в том, чтобы перенести доступ к данным (статический метод Select) в отдельный репозиторий и заставить контроллер использовать этот репозиторий вместо прямого вызова метода Select для запроса к базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...