2017-05-30 4 views
0

モーダルフォームを使用してユーザー(または管理者)が行う可能性のあるアクションを確認するWebアプリケーションがあります。モーダルフォームの設定は、MicrosoftのIdentitySampleApplicationプロジェクトから取得され、この1つの違いでほぼ同じ方法でプロジェクトに組み込まれました。私は一般的なモーダルフォームを使用しています。私はユーザーがアプリケーション上で複数のユーザーロールを持つことを許可しています(サンプルではユーザーが1つの役割しか持たないと仮定しています)。MVC.NETのコアブートストラップ - 複数のパラメータを持つモーダルフォームがポストコントローラに届かない

このタイプのマルチロールシナリオでは、メンテナンス。私は、1つのIDだけを含むコードのすべてのインスタンスが正常に動作することを指摘しておきます。コントローラで必要なIDのいずれかを通過できないのは2つのIDを持つこの1つのインスタンスです。

ユーザーロールを削除するには、ユーザーとロールのキーが必要です。 私のコントローラには以下のようなコードがあり、IDを受け取ってモーダルフォームを表示します。これは非常にうまく動作します。

[HttpGet] 
public IActionResult DeleteUserRole(string userid, string roleid){...} 

HttpPost部分がこの

[HttpPost] 
public IActionResult DeleteUserRole(string userid, string roleid, IFormCollection form){...} 

のようなものですが、この2番目のアクションは、モーダルフォームに渡されたIDがメソッドを取得し得ることはありません。

ルーティングIDが1つしかないすべての方法では、問題はありません。私を困らせるのはこの方法だけです。私はこのリンクからそれを呼び出します。

<a id="deleteRoleModal" asp-action="DeleteUserRole" 
asp-route-userid="@item.userId" asp-route-roleid="@item.roleId" 
data-toggle="modal" data-target="#modal-action-role" 
class="btn btn-sm btn-danger"> 

の基部にある2つのASP-ルート変数に注意してください、私はこれが私の問題の核心である疑いがあるが、get呼び出しはこれで結構です、それは値がないポストです私はそれがこのように見て使用するモーダルフォームの実装を持っているフォーム:私のモーダルフォームがはるかにIdentitySampleProjectで使用したサンプルのように見え、ここに示されている

@await Html.Partial("_Modal", new BootstrapModel { ID = "modal-action-role", AreaLabeledId = "modal-action-role-label", Size = ModalSize.Medium }) 

、それがどんな意味のある方法で変更されていなかったが、まだ単一で正常に動作しますパラメータのコールバック:

@model string 
@using MyModels 

<form asp-action="DeleteUserRole" role="form"> 
    @Html.AntiForgeryToken() 
    @await Html.Partial("_ModalHeader", new ModalHeader { Heading = "Delete User Role" }) 

    <div class="modal-body form-horizontal"> 
     Are you sure you want to delete user role @Model? 
    </div> 
    @await Html.Partial("_ModalFooter", new ModalFooter { SubmitButtonText = "Delete" }) 
</form> 

私は問題を解決するための方向を探しています。私は本当に二重ルートIDが私の問題だと思っていますが、他の誰かがサンプルでこれをやっているのを見つけることはできません。

生成された管理ページでは、主に次のようになります。正確に問題を見つけるための正しい方向にナッジたあなたが提供することができるかもしれない任意の方向について

<!DOCTYPE html> 
<html> 
<head> 
    <title>my company</title> 
    <meta charset="utf-8" /> 
    <link rel="stylesheet" href="/lib/bootstrap/dist/css/bootstrap.min.css" /> 
    <link rel="stylesheet" href="/lib/bootswatch/spacelab/bootstrap.min.css" /> 
    <link rel="stylesheet" href="/lib/font-awesome/css/font-awesome.min.css" /> 
    <link rel="stylesheet" href="/css/site.css" /> 
    <link rel="stylesheet" href="/css/navTabs.css" /> 
    <link rel="stylesheet" href="/css/partner.css" /> 
</head> 

<body> 

    <div id="header"> 
     <div class="slideContainer"> 
      <div class="slide"><img src="/image/Firm-small2.jpg" alt="Offices" class="headerImage" /></div> 
      <div class="slide"><img src="/image/InLibrary225.jpg" alt="Library" class="headerImage"></div> 
      <div class="slide"><img src="/image/DSC_9999editSM.JPG" alt="Offices" class="headerImage" /></div> 
      <div class="slide"><img src="/image/DSC_9925edit2SM.JPG" alt="Computer Room" class="headerImage" /></div> 
     </div> 

     <nav class="navbar navbar-inverse"> 
       <ul class="nav navbar-nav navbar-right "> 
        <li class="navtext"> 
         <label>-- &nbsp;&nbsp;&nbsp;Welcome: Webmaster &nbsp;&nbsp;&nbsp;</label> 
        </li> 
       </ul> 
      <ul class="nav navbar-nav navbar-right"> 
       <li class="navtext"> 
        <label>Your Proven Partner in Cartoon Drawing</label> 
       </li> 
      </ul> 

     </nav> 

    </div> 

    <div id="sidebar"> 
     <div><img src="/image/headerLogo.gif" alt="my company Logo" class="logoImage" /></div> 

     <nav id="menu"> 
      <ul class="nav navbar-inverse"> 
       <li><a href="/">Home</a></li> 
       <li> 
        <div id="menuGroupItem"> 
         <a href="/Partners">Partners</a> 
         <a data-toggle="collapse" data-target="#partnerMenu"><i class="fa fa-chevron-down"></i></a> 

        </div> 
        <ul id="partnerMenu" class="nav collapse" role="menu" aria-labelledby="partnerMenu"> 
         <li><a href="/Partners/PartnerBio/Eddy%20A%20Fish"><i class="fa fa-caret-right"></i> Eddy A Fish</a></li> 
         <li><a href="/Partners/PartnerBio/Tom%20A%20Hawk%20III"><i class="fa fa-caret-right"></i> Tom A Hawk</a></li> 
        </ul> 
       </li> 
       <li><a href="/App/OurServices">Services</a></li> 
       <li><a href="/Events/News">News</a></li> 
       <li><a href="/Events/Events">Events</a></li> 
       <li><a href="/Events/Pubs">Publications</a></li> 
       <li><a href="/App/FirmHistory">Firm History</a></li> 
       <li><a href="/App/Contact">Contact</a></li> 
        <li class="divider"></li> 
        <li><a href="/Auth">Manage Website</a></li> 
        <li><a href="/Auth/Logout">Logout</a></li> 
      </ul> 
     </nav> 
     <div class="affiliation"> 
      <table> 
       <tr> 
        <td> 
         <img src="/image/WBE_color_rgb_UP25.jpg" alt="" class="affiliationImage" /> 
        </td> 
       </tr> 
      </table> 
     </div> 

     <div> 
      <ul class="rightAlign"> 
       <li>&nbsp;</li> 
       <li>my company</li> 
       <li>16 main street</li> 
       <li>anytown, pa 00000</li> 
       <li>&nbsp;</li> 
       <li>610.111.1111</li> 

      </ul> 
     </div> 

    </div> 

    <div id="wrapper"> 
     <div id="main" class="container-fluid"> 

<div class="row"> 
    <div class="col-md-8 col-md-offset-2"> 
<form action="/Users/UserRole/a2c77901-4a74-49aa-9354-1fadc943c8c4" method="post"><input id="UserId" name="UserId" type="hidden" value="a2c77901-4a74-49aa-9354-1fadc943c8c4" /><input id="UserName" name="UserName" type="hidden" value="BioEditor" />   <h3>Add roles for user: <span class="text-success">BioEditor</span></h3> 
      <div> 
       <div class="form-group"> 
        <table class="table table-responsive"> 
         <thead> 
          <th>Role</th> 
          <th>Action</th> 
         </thead> 
         <tbody> 
           <tr> 
            <td><i class="fa fa-check text-success"> </i>BioEditor</td> 
            <td> 
             <a id="deleteRoleModal" data-toggle="modal" data-target="#modal-action-role" class="btn btn-sm btn-danger" href="/Users/DeleteUserRole?userid=a2c77901-4a74-49aa-9354-1fadc943c8c4&amp;roleid=8b12b24d-5836-46eb-a7aa-0be1818a67f5"> 
              <i class="fa fa-trash"></i> Delete 
             </a> 
            </td> 
           </tr> 
           <tr> 
            <td><i class="fa fa-check text-success"> </i>PowerEditor</td> 
            <td> 
             <a id="deleteRoleModal" data-toggle="modal" data-target="#modal-action-role" class="btn btn-sm btn-danger" href="/Users/DeleteUserRole?userid=a2c77901-4a74-49aa-9354-1fadc943c8c4&amp;roleid=c4f3bdf8-b880-423c-8de3-1e51329da104"> 
              <i class="fa fa-trash"></i> Delete 
             </a> 
            </td> 
           </tr> 
           <tr> 
            <td><i class="fa fa-check text-success"> </i>Administrator</td> 
            <td> 
             <a id="deleteRoleModal" data-toggle="modal" data-target="#modal-action-role" class="btn btn-sm btn-danger" href="/Users/DeleteUserRole?userid=a2c77901-4a74-49aa-9354-1fadc943c8c4&amp;roleid=f1aafc1e-0527-4542-8f0e-fb1afeccac46"> 
              <i class="fa fa-trash"></i> Delete 
             </a> 
            </td> 
           </tr> 
         </tbody> 

        </table> 
       </div> 
       <div class="form-group"> 
        <div class="input-group"> 
         <select class="input-group form-control" data-val="true" data-val-required="The ApplicationRoleId field is required." id="ApplicationRoleId" name="ApplicationRoleId"> 
          <option>Please select</option> 
         <option value="8b12b24d-5836-46eb-a7aa-0be1818a67f5">BioEditor</option> 
<option value="c4f3bdf8-b880-423c-8de3-1e51329da104">PowerEditor</option> 
<option value="f1aafc1e-0527-4542-8f0e-fb1afeccac46">Administrator</option> 
<option value="fe77274d-4b16-46a6-8177-a84faf198c9b">EventEditor</option> 
</select> 

         <span class="input-group-btn"> 
          <button type="submit" class="btn btn-sm btn-success"><i class="fa fa-user"> </i> Add Selected Role </button> 
         </span> 
         <span class="field-validation-valid" data-valmsg-for="ApplicationRoleId" data-valmsg-replace="true"></span> 
        </div> 
       </div> 
      </div> 
<input name="__RequestVerificationToken" type="hidden" value="CfDJ8KeASaIZMdBDjnZy_1CdaouczJ-zwxPaQp-N5OQ5bGWfYzVfpDz7_iC0VlJb_cRDkqucT-8ENFhsNPe9Rng1Mqrm9VQbYQoSQwerxj953ql4v7dABrW6pioEySOJN7qFXaalGYePyjHoB0QiKxfuvkvh938tJG4gVnh5D1JvLyNBBKlR4d25PcoJOJZTdN_Bxg" /></form> </div> 
</div> 


<div aria-hidden="true" aria-labelledby="modal-action-role-label" role="dialog" tabindex="-1" id="modal-action-role" class="modal fade"> 
    <div class="modal-dialog "> 
     <div class="modal-content"> 
     </div> 
    </div> 
</div> 


     </div> 
    </div> 



    <div id="footer" class="container-fluid"> 
     <div class="navbar navbar-fixed-bottom navbar-inverse "> 
      <ul> 
       <li class="navbar-link">&copy; my company</li> 
       <li class="navbar-link text-muted"><a id="disclaimerLink" href="#">Disclaimer</a></li> 
      </ul> 
     </div> 
    </div> 


    <script type="text/javascript" src="/lib/jquery/dist/jquery.js"></script> 
    <script type="text/javascript" src="/lib/bootstrap/dist/js/bootstrap.min.js"></script> 


    <script src="/lib/jquery-validation/dist/jquery.validate.min.js"></script> 
    <script src="/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script> 

    <script type="text/javascript" src="/js/site.js"></script> 

</body> 

</html> 

おかげで、ケント

+0

問題のモデルの生成されたhtmlを追加してください。 – Ahmar

+0

管理ページ用に生成されたhtmlで編集されます。 – Kent

+0

ありがとうAhmar。それが答えへの道でした。下記を参照してください。 – Kent

答えて

1

を、 Ahmarに感謝します。 2つのIDがコントローラに返されるため、データは実際のルート{controller} {action} {id}ではなくクエリ文字列にラップされます。

モーダルはクエリ文字列を最後まで渡さないので、モデルを変更して最終削除のためにモーダルフォームの値を折り返してすべて処理しました。これを解決するために質問をすることに感謝します。

関連する問題