2016-10-30 6 views
0

これはロールのコントローラーです。質問はフォームまたはビューから「Admins」という名前の役割を挿入するフォームを作成する方法です。事前のおかげでasp.net MVC 5ロールモデルのコントローラーとフォーム

public ActionResult CreateRole() 
{ 
    string Output = ""; 
    ApplicationDbContext db = new ApplicationDbContext(); 
    RoleManager<IdentityRole> RoleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(db)); 

    if (!RoleManager.RoleExists("Admins")) 
    { 
     IdentityResult Result = RoleManager.Create(new IdentityRole("Admins")); 
     if (Result.Succeeded) 
     { 
      Output = "the role created"; 
     } 
     else 
     { 
      int ErrorCount = Result.Errors.Count(); 
      Output = "Errors is: " + Result.Errors.ToList()[0]; 
     } 
    } 
    else 
    { 
     Output = "the roles exist"; 
    } 
    return Content(Output); 
} 
+0

このコードの問題は何ですか? –

+0

問題はありません私はどのようにすることができますビューからこれを試す必要がありますか? @HakamFostok –

答えて

0

ファーストを使用する方法を学ぶこのgreateのarticleを相談することができ、それの基本を知らない場合には:

その後、NewRoleモデルを送信し、同じ名前のポストメソッドで取得するようにコントローラを編集する必要があります。

public ActionResult CreateRole() 
    { 

     NewRole newRole = new NewRole(); 
     return View(newRole); 
    } 
    [HttpPost] 
    public ActionResult CreateRole(NewRole newRole) 
    { 
     string Output = ""; 
     ApplicationDbContext db = new ApplicationDbContext(); 
     RoleManager<IdentityRole> RoleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(db)); 

     if (!RoleManager.RoleExists("Admins")) 
     { 
      IdentityResult Result = RoleManager.Create(new IdentityRole(newRole.Name)); 
      if (Result.Succeeded) 
      { 
       Output = "the role created"; 
      } 
      else 
      { 
       int ErrorCount = Result.Errors.Count(); 
       Output = "Errors is: " + Result.Errors.ToList()[0]; 
      } 
     } 
     else 
     { 
      Output = "the roles exist"; 
     } 

     if (Output == "") 
     { 
      ModelState.AddModelError(string.Empty, "tesssst"); 
      return View(newRole); 
     } 
     else 
     { 
      return Redirect("Suscces url"); 
     } 

    } 

最後に、CreateRoleメソッドを右クリックし、create viewを押します。

このようなビューを作成します。あなたは、エラーメッセージを表示する単純なビューを持っている。その後

enter image description here

を。あなたの意見にいくつかのCSSを書くことを忘れないでください。

@model WebApplication1.Models.NewRole 

@{ 
    ViewBag.Title = "CreateRole"; 
} 

<h2>CreateRole</h2> 
@using (Html.BeginForm()) 
{ 
    @Html.LabelFor(x => x.Name, new { @class = "LoginText" }) 
    @Html.TextBoxFor(x => x.Name, new { @class = "form-control" }) 
    @Html.ValidationMessageFor(x => x.Name) 
    @Html.ValidationSummary() 
    <button type="submit">Save</button> 
} 
+0

この新しいロールはテーブルAspNetRolesに保存されません。 –

+0

ここで、ユーザーによるロールの書き込みは、あなたの行に保存されます - > IdentityResult Result = RoleManager.Create(new IdentityRole(newRole.Name)); – Ferri

1

は右、これはダイアログが があなたの必要性を指定し、デフォルト値を受け入れ見えるようになりますAddViewをクリックしたContextMenuから ACTIONNAME(あなたのCAESでCreateRoleメソッド名)をクリックしてください。ビュー内の は、次のコード

@using(Html.BeginForm()) { 
    <input type="submit" value="Create Role" /> 
} 

を追加また、あなたは、あなたがビューから「ロールの作成」ボタンをクリックすると、今、この

[HttpPost] 
public ActionResult CreateRole() 

のように、ACTIONNAME上記の次の属性を追加する必要がありますコードの実行が開始されている必要があります。デバッグするメソッドの先頭にブレークポイントを設定することもできます。

注:getアクションを追加する必要があることに注意してください。 した まだこれを追加しないで、次のコード

[ActionName("CreateRole")] 
public ActionResult GetCreateRole() 
{ 
    return View(); 
} 

を記述する必要があります。また、ビューは、このコードが動作するために、すべてのモデルを取らないことを指定する必要があります。

あなたは、ASP.NET MVCの新機能で、あなたはどのようにこのようなデータのモデルを作成する必要があるすべてのMVC

+0

これは似ていません。コントローラからデータを渡したいのですが、コントローラでそれを管理する方法はありますか? –

+0

@waliahmadどのデータをビューからコントローラに渡す必要がありますか? –

関連する問題