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
{
・・・・うんぬんかんぬん・・・
}

