Как передать ADO.NET DataSet в представление - PullRequest
2 голосов
/ 15 марта 2012

У меня есть устаревший проект, который мы постепенно переходим на MVC, но есть сотни объектов ADO.NET SQL DataSet

Я хотел бы сохранить наборы данных в модели и получить к ним доступ в виде,Это возможно, или есть лучший способ сделать это?Создать списки сложно, потому что данных слишком много.В конечном итоге мы преобразуем SQL в сущность, но не сейчас.

Пример:

Модель:

 string query = "SELECT * FROM dbo.manf";
 SqlDataAdapter adapter = new SqlDataAdapter(query, conn);
 DataSet data = new DataSet();
 adapter.Fill(data, "manf");

Просмотр:

@foreach (DataRow data in manf.Tables["manf"].Rows)
{
    @:manf["id"] + " " + manf["name"]);
}  

Ответы [ 2 ]

2 голосов
/ 16 марта 2012

Вы можете передать любой объект в View, который хотите, поэтому код вашего контроллера должен выглядеть следующим образом:

public ViewResult Index() 
{ 
    .... 
    return View(data); 
} 

А ваш взгляд:

@model System.Data.DataSet

@foreach (DataRow row in Model.Tables["manf"].Rows)    
{    
    @(row["id"] + " " + row["name"])
}  

Переданный объект будет сохранен в свойстве Model общего базового класса представления, и вы можете получить к нему доступ с помощью Model. @Model определяет тип данных передаваемого объекта.

В любом случае любой код будет закодирован в формате HTML, а: не требуется. Если вы не хотите кодировать, вам придется использовать @ Html.Raw (...).

РЕДАКТИРОВАТЬ: вы можете перемещать только один параметр в качестве модели. Если вы хотите использовать более одного объекта, вы либо определяете новый тип данных (ViewModel), который содержит свойства для обоих. Для простых объектов, таких как заголовок окна, вы можете использовать ViewBag.

ViewBag.Title = myTitle;

ViewBag - это динамическое свойство контроллера и, по сути, оболочка над ViewData.

1 голос
/ 11 августа 2016

Код контроллера

     //pQ is your query you have created 
     //P4DAL is the key name for connection string 

       DataSet ds = pQ.Execute(System.Configuration.ConfigurationManager.ConnectionStrings["Platform4"].ConnectionString);


      //ds will be used below
      //create your own view model according to what you want in your view 
     //VMData is my view model

     var _buildList = new List<VMData>();
                {
                    foreach (DataRow _row in ds.Tables[0].Rows)
                    {
                        _buildList.Add(new VMData
                        {  
         //chose what you want from the dataset results and assign it your view model fields 

                            clientID = Convert.ToInt16(_row[1]),
                            ClientName = _row[3].ToString(),
                            clientPhone = _row[4].ToString(),
                            bcName = _row[8].ToString(),
                            cityName = _row[5].ToString(),
                            provName = _row[6].ToString(),
                        });



                    }

                }

      //you will use this in your view
      ViewData["MyData"] = _buildList;

Просмотр

    @if (ViewData["MyData"] != null)
    {

        var data = (List<VMData>)ViewData["MyData"];
        <div class="table-responsive">
            <table class="display table"  id="Results">

                <thead>
                    <tr>
                        <td>Name</td>
                        <td>Telephone</td>
                        <td>Category </td>
                        <td>City </td>
                        <td>Province </td>

                    </tr>
                </thead>

                <tbody>
                    @foreach (var item in data)
                    {
                <tr>
                    <td>@Html.ActionLink(item.ClientName, "_Display", new { id = item.clientID }, new { target = "_blank" })</td>
                    <td>@item.clientPhone</td>
                    <td>@item.bcName</td>
                    <td>@item.cityName</td>
                    <td>@item.provName</td>

                </tr>

                }
                </tbody>


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