×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
・色々なサンプルを見ているとmodelとViewが対をなしているように感じた
業務では、売上を例に取ると
・売上テーブル
取引先コード、日付け、番号、商品コード、数単金
・取引先テーブル
取引先コード、取引先名
・商品テーブル
商品コード、商品名
どうするのか
・1対1と思い込んでいたので
以下のモデルを作った
・売上詳細テーブル
取引先コード、取引先名、日付け、番号、商品コード、商品名、数単金
これでビューを自動生成し、コントローラに組みこんだ
不便な仕様だと思っていたが
・モデルにNをセットできる方法があった
TProductとTProductDetail の二つのモデルを扱う場合を例にすると
新たにモデル内にクラスを作成する
Product. または ProductDetailをつければOK
例によってビルドをお忘れ無く
・コントローラーは
業務では、売上を例に取ると
・売上テーブル
取引先コード、日付け、番号、商品コード、数単金
・取引先テーブル
取引先コード、取引先名
・商品テーブル
商品コード、商品名
どうするのか
・1対1と思い込んでいたので
以下のモデルを作った
・売上詳細テーブル
取引先コード、取引先名、日付け、番号、商品コード、商品名、数単金
これでビューを自動生成し、コントローラに組みこんだ
query = "SELECT a.id,a.name,a.price,a.cateid,b.name as catename "
+ " FROM TProduct a "
+ " inner join TCategory b on( a.cateid = b.id)"
+ "ORDER BY a.id";
不便な仕様だと思っていたが
・モデルにNをセットできる方法があった
TProductとTProductDetail の二つのモデルを扱う場合を例にすると
新たにモデル内にクラスを作成する
public class ProductItemModel
{
public TProduct Product { get; set; }
public TProductDetail ProductDetail { get; set; }
}
・ビューを作成するが、なぜか自動生成はエラーになるので
空のビューを作成する
なんの事はない、modelの後に・ビューを作成するが、なぜか自動生成はエラーになるので
空のビューを作成する
@model MvcShopping2.Models.ProductItemModel
XXXXXXXXXXXXXXXXXXXXXXXX
<div>
<h4>ProductItemModel </h4>
<hr />
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.Product.id)
</dt>
<dd>
@Html.DisplayFor(model => model.Product.id )
</dd>
<dt>
@Html.DisplayNameFor(model => model.Product.price)
</dt>
Product. または ProductDetailをつければOK
例によってビルドをお忘れ無く
・コントローラーは
public ActionResult Details2(string id)
{
ProductItemModel model = new ProductItemModel();
string query = "";
query = "SELECT a.id,a.name,a.price,a.cateid "
+ " FROM TProduct a "
+ " WHERE a.id = " + "'" + id + "'";
model.Product = db.Database.SqlQuery<TProduct>(query).Single();
query = "SELECT a.id,a.description "
+ " FROM TProductDetail a "
+ " WHERE a.id = " + "'" + id + "'";
model.ProductDetail = db.Database.SqlQuery<TProductDetail>(query).Single();
return View(model);
}
・商品コード等は
string str = model.Product.cateid.ToString();
等々で、読み出してつかえばいい
・旧来のように
データを読み出してVIEWに手動でセットする方法も
使えますね
・商品コード等は
string str = model.Product.cateid.ToString();
等々で、読み出してつかえばいい
・旧来のように
データを読み出してVIEWに手動でセットする方法も
使えますね
PR