0

3 つの ID 値を格納するエンティティ SecurityroleTypePermision があります。

  • セキュリティロールID
  • AssetTypeId
  • 権限レベル ID

データベーステーブルにデータを入力する必要があるasp.net mvc Webアプリケーション内のセキュリティマトリックスに取り組んでいます。

私の見解は次のようになります:-

model TMS.ViewModels.SecurityRoleGroupAssign
@using (Html.BeginForm("Assign","SecurityRole")) {
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<table class="table table-striped table-bordered bootstrap-datatable datatable">
 <thead><tr>
<th></th>
@foreach(var item in Model.PermisionLevel.OrderByDescending(a=>a.PermisionSize)){
        <th>
@item.Name @Html.HiddenFor(model => item.PermisionLevelID)
        </th>}
    </tr>
@foreach (var item2 in Model.TechnologyType.OrderBy(a=>a.Name)) {
   <tr>
    <td class="f">
        @item2.Name
    </td>
       @foreach (var item3 in Model.PermisionLevel.OrderByDescending(a=>a.PermisionSize))
       {
           <td class="f">
               @Html.RadioButtonFor(model => item2.AssetTypeID,item2.AssetTypeID.ToString())
               @Html.HiddenFor(model => item3.PermisionLevelID,item3.PermisionLevelID)
           </td>}
</tr>}
@Html.HiddenFor(model => model.SecurityRole.SecurityRoleID)
</table></div></div></div>
 <p><input type="submit" value="Save" />
</p>

私の行動方法は: -

[HttpPost]
public ActionResult Assign(IList<SecurityroleTypePermision> list)
        {    foreach (var c in list)
            {  repository.InsertOrUpdateSecurityroleTypePermisions(c);
            }
            repository.Save();
            return RedirectToAction("Index");}

現在、私は次の問題に直面しています:-

  1. フォームを送信すると、割り当てアクション メソッド内で次のエラーが発生します。

System.NullReferenceException はユーザー コードによって処理されませんでした

  1. すべてのラジオ ボタンは同じグループ内にあるため、ユーザーはテーブルごとに 1 つのラジオ ボタンしか選択できません。代わりに、ユーザーがテーブルの行ごとに 1 つのラジオ ボタンを選択できるようにする必要があります。

    ありがとう

::::::編集:::::::

ビューモデルは次のとおりです:-

public class SecurityRoleGroupAssign
{
    public  IEnumerable<TechnologyType> TechnologyType {get; set;}
    public  IEnumerable<PermisionLevel> PermisionLevel {get; set;}
    public SecurityRole SecurityRole { get; set; }

}

データベースの一部は次のとおりです。 ここに画像の説明を入力

4

0 に答える 0