したがって、別のデータベースでasp.netメンバーシップを使用するmvc .netアプリケーションには、管理者、会社、および従業員の3つの役割があります。モデルを変更するたびに .net メンバーシップ テーブルが削除されるため、.net メンバーシップを別のデータベースに移動しました。
とにかく、アクション メソッドで if/else を使用してさまざまな役割を処理しています。たとえば、Index() アクションでは、ユーザーが管理者ロールにあるかどうかを確認し、それに基づいてモデルと linq クエリを作成します。ユーザーが会社ロールの場合は別のクエリで、ユーザーが従業員ロールの場合は別のクエリです。以下のコードを確認してください。if 条件が View に渡された後に作成されるモデル。
これは役割を処理する最良の方法ではないように感じます。これは役割を処理するための最良の方法ですか? 私も別の分野を検討していますが、私は異なる役割に対して同じビューを使用しているため、生産的ではない可能性があると思います。
どんな提案/アイデアも大歓迎です。
[Authorize]
public class CompanyController : Controller
{
private MyDBContext db = new MyDBContext();
//
// GET: /Company/
public ViewResult Index()
{
var viewModel = new CompanyIndexViewModel();
if (Roles.IsUserInRole("administrators")) {
viewModel = new CompanyIndexViewModel { Companies = db.Companies.ToList() };
}
else if (Roles.IsUserInRole("companies")) {
viewModel = new CompanyIndexViewModel { Companies = db.Companies.Where(c => c.Username.ToLower().Equals(this.User.Identity.Name.ToLower())).ToList() };
}
else if (Roles.IsUserInRole("employees")) {
string userName = this.User.Identity.Name.ToLower();
var companies = db.Companies.Where(c => c.Appointments.Any(a =>
a.Employee.Username.ToLower() == userName)).ToList();
viewModel = new CompanyIndexViewModel { Companies = companies.ToList() };
}
return View(viewModel);
}
....