×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
・ルーティングのお勉強
・SQLダイレクト C#
・LINQ VB
・ViewのList表示の幅とラベル名の小技少々
一目でわかる「ASP.NET MVC アプリケーション開発入門」(日経BP)を
VS2013に変更している。MSDNにも補足があるが、VS2010版でMVC5とは
互換性がない。備忘録+改造を色々として見た。
早く2013 mvc5対応版を出して欲しい>>日経BPさん
・ルーティングのお勉強
http://localhost/home/index/2
コントローラー/アクション/パラメータ
これを利用して、サンプルとして

カテゴリ別の表示を作ってみた。(表示はカテゴリで選択)
・SQLダイレクト C#
・LINQ VB
・ViewのList表示の幅とラベル名の小技少々
一目でわかる「ASP.NET MVC アプリケーション開発入門」(日経BP)を
VS2013に変更している。MSDNにも補足があるが、VS2010版でMVC5とは
互換性がない。備忘録+改造を色々として見た。
早く2013 mvc5対応版を出して欲しい>>日経BPさん
・ルーティングのお勉強
http://localhost/home/index/2
コントローラー/アクション/パラメータ
これを利用して、サンプルとして
カテゴリ別の表示を作ってみた。(表示はカテゴリで選択)
public ActionResult Index(int? id)
素直にidとすればいいものをcatidとすると何をしてもnullになる。
AppStartのRouteConfig内で受けている訳だが
・VBではLINQで作成してみた
・ついでにVIEWの表示ですが幅が狭くなったので
モデルに幅を定義
・直接Viewにこの記載方法でも可
素直にidとすればいいものをcatidとすると何をしてもnullになる。
AppStartのRouteConfig内で受けている訳だが
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
何の事はないidで受けており、idだとパラメータとして判断していない
ああ疲れた。
・C#では
何の事はないidで受けており、idだとパラメータとして判断していない
ああ疲れた。
・C#では
public ActionResult Index(int? id) ?はNULLもOK
{
string query = ""; SQL文の記載用
if (id == null)
{
id = 0;
}
if (id == 0)
{
query = "SELECT a.id,a.name,a.price,a.cateid "
+ " FROM TProduct a "
+ "ORDER BY a.id";
}
else
{
query = "SELECT a.id,a.name,a.price,a.cateid "
+ " FROM TProduct a "
+ " WHERE cateid = " + id
+ "ORDER BY a.id";
}
var tpc = db.Database.SqlQuery<TProduct>(query); データの読み出し
カテゴリが登録されているか?
カテゴリが登録されているか?
query = "SELECT * FROM TCategory WHERE id = " + id;
var cnt = db.Database.SqlQuery<TCategory>(query).Count();
if (cnt > 0)
{
var tpc2 = db.Database.SqlQuery<TCategory>(query).First();
string cname = tpc2.name; <<Firstと変換がミソ>>
ViewBag.cname = cname;
}
return View(tpc);
}
・VBではLINQで作成してみた
Function index(Optional ByVal id As Integer = -1) As ActionResult
If id = -1 Then
' カテゴリを指定しなかった場合
ViewData("ErrorMessage") = "カテゴリIDを指定してください"
Return View("Error")
End If
Dim ent As New mvcdbEntities
' カテゴリ名称を取得
Dim count = (From c In ent.TCategory
Where c.id = id
Select c.name).Count
If count = 0 Then
' カテゴリIDが範囲を超えている場合
ViewData("ErrorMessage") =
String.Format("カテゴリID({0})が正しくありません", id)
Return View("Error")
End If
' 指定したカテゴリ内の商品を取得
Dim model = From t In ent.TProduct
Where t.cateid = id
Select t
' カテゴリ名称を取得
Dim cname = (From c In ent.TCategory
Where c.id = id
Select c.name).Single
' ViewData に保存
ViewData("CategoryName") = cname
Return View(model)
End Function
・ついでにVIEWの表示ですが幅が狭くなったので
モデルに幅を定義
[StringLength(5)]
public string id { get; set; }
[Required]
[StringLength(50)]
public string name { get; set; }
・ついでに名称のセットは
[Display(Name = "名前")]
・ついでに名称のセットは
[Display(Name = "名前")]
public string name { get; set; }
[Display(Name = "価格")]
public int price { get; set; }
[Display(Name = "カテゴリー")]
public int cateid { get; set; }
・直接Viewにこの記載方法でも可
@Html.Label("名 前")
@Html.Label("価 格")
@Html.Label("カテゴリ")
PR