MVC4 小技集メモ(1)
VS2012 Update3 でMVC4+CodeFirstを使った時のメモ
Code FirstでDBを自動的に変更するには
下記のいずれかを使うべし
【Global.asax.cs】 //DBを自動的に再作成 開発初期時用 下記のどっちかを使う Database.SetInitializer(new DropCreateDatabaseIfModelChanges<MyDbContext>()); // Database.SetInitializer(new DropCreateDatabaseAlways<MyDbContext>());
SQL CE4を使うとコントローラ自動作成に失敗する。
connectionStringのProviderNameを一時的にproviderName=”System.Data.SqlClient”に変更して自動作成させるべし。実行時はもとに戻す。
【web.config】 <add name="DefaultConnection" connectionString="Data Source=|DataDirectory|\UsersDB.sdf" providerName="System.Data.SqlServerCe.4.0"/>
Roleを実装するには
SimpleRoleProviderを使うべし
【web.config】 <system.web> ・・・うんぬんかんぬん・・・・・ <roleManager enabled="true" defaultProvider="SimpleRoleProvider"> <providers> <clear/> <add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData"/> </providers> </roleManager> <membership defaultProvider="SimpleMembershipProvider"> <providers> <clear/> <add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" /> </providers> </membership> </system.web>
System.Web.Security.Rolesクラス(static)から操作できる。
[AcceptVerbs(HttpVerbs.Get)] public JsonResult GetUsersInRole(string Role) { string[] users = Roles.GetUsersInRole(Role); return Json(users,JsonRequestBehavior.AllowGet); }
ページのキャッシュをOFFにしたい時は
OutputCacheAttributeを使うべし
[OutputCacheAttribute(VaryByParam = "*", Duration = 0, NoStore = true)] //キャシュoff public class RoleController : Controller { ・・・・うんぬんかんぬん・・・ }
自動で作られるCreate用のviewにて、名称と入力枠を左右に並べるには
site.cssに.editor-label、.editor-fieldを定義すべし
【site.csss】※微調整は自分でしてね input, textarea { border: 1px solid #e2e2e2; background: #fff; color: #333; font-size: 1.2em; /*margin: 5px 0 6px 0;* ←コメントアウト padding: 2px; width: 300px; } ※新規追加 .editor-label { border-width: 1px; clear: both; float: left; padding: 2px; width: 150px; margin: 0 5px 0 0; background-color: lightgray; } ※新規追加 .editor-field { width: auto; overflow: auto; }
ROLEによるアクセス制限をかけるには
[Authorize(Roles=”ロール名”)]を使うべし
[Authorize(Roles="Admins")] public class RoleController : Controller { ・・・・うんぬんかんぬん・・・ }