4

私はMVCを初めて使用し、モデルのクラス内の顧客データを読み取り、コントローラーを使用してビューに返す単純なMVC 3アプリケーションを作成しようとしています。リーダーは行があることを示していますが、テーブルにロードしてモデルとしてビューに渡すと、null になります。DataTableaをビューに渡すか、にDataReader変換できる場所をビューに渡す簡単なソリューションが必要DataTableです。

コードは次のとおりです。

namespace MvcApplication3.Models
{
    public class Customer
    {
        public DataTable GetCustomers(OdbcDataReader rds)
        {
            String ConString = "DSN=Northwind;Uid=;Pwd=;";
            String SQL = "SELECT * FROM CUSTOMERS";
            DataTable tbl = new DataTable();

            using (OdbcConnection con = new OdbcConnection(ConString))
            {
                con.Open();
                OdbcCommand cmd = new OdbcCommand(SQL, con);
                rds = cmd.ExecuteReader();
            }
        }

    }
}

namespace MvcApplication3.Controllers
{
    public class DefaultController : Controller
    {
        //
        // GET: /Default1/

        public ActionResult Index()
        {
            Customer cs = new Customer();
            OdbcDataReader rd = new OdbcDataReader();
            cs.GetCustomers(rd);

            DataTable tb = new DataTable();
            tb.Load(rd);
            return View(tb);
        }
    }
}
4

5 に答える 5

4

をビューに渡さないでくださいDataReader。まず、切断されたオブジェクト/モデルに変換してください。

Razor を使用している場合は、これを .cshtml ページの先頭に追加して、期待するモデルのタイプを伝えます。

@model  System.Data.DataTable
于 2013-07-25T21:52:26.120 に答える
3

1.データテーブルをビューに渡します。

 public ActionResult my()
    {
        con.Open();
        SqlCommand cmd = new SqlCommand("select * from table",con);
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        DataTable dt = new DataTable();
        da.Fill(dt);
        return View(dt);

    }

2.ビューでデータテーブルを受け入れます

@model System.Data.DataTable


<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>my</title>
</head>

<body>
    <div> 
       No of rows= @Model.Rows.Count
    </div>
</body>
</html>

試してみてください :) (y)

于 2014-09-28T14:01:21.313 に答える