0

私は以下のようなセキュリティ メトリクス ページに取り組んでいます:- ここに画像の説明を入力

現在、ビュー内に次のコードがあります:-

@foreach(var item in Model.PermisionLevel.OrderByDescending(a=>a.PermisionSize)){
<th>
</th>}
</tr>
 @{
int i =0 ;
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.RadioButton(item2.Name, item3.PermisionLevelID)
                @Html.Hidden("AssetTypeID" , item2.AssetTypeID)
                @Html.Hidden("PermisionLevelID",item3.PermisionLevelID)
                @Html.Hidden("SecurityRoleID",Model.SecurityRole.SecurityRoleID)
             </td>
} 
</tr>
}
}         

および次の ActionMethod:-

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

しかし、関連するラジオボタンがオンになっている場合にのみ、関連する隠しフィールドの値を渡す方法がわかりません。現在、ビューを送信すると、アクション メソッドは null 例外を発生させますか? これを修正する方法について誰かアドバイスできますか?

4

1 に答える 1

0

各ラジオ グループには、item2.Name のような名前があります。

// see if this group is selected
var radWebSite = $('[name="SomeName"]:checked');
if (radWebSite.length > 0) {
    // this group has a selection, get the value
    var WebSiteVal = radWebSite.val();
}

すべての回答を変数または何らかのオブジェクトに取得する場合は、それをアクション メソッドに渡すことができます。ここに提案があります

$('#SaveClick').click(function() {
    var SavePermissions = {};
    SavePermissions.WebSite = WebSiteVal // this is the variable from above
    // .... do this for each radio group

    var DTO = { 'DTO': SavePermissions };

    $.ajax({
            type: "POST",
            contentType: 'application/json;charset=utf-8',
            url: "/ControllerName/ActionMethodName",
            dataType: "json",
            data: JSON.stringify(DTO),
            success: function (data) {
                // do success stuff
            },
            error: function(data){
                // do error stuff
            },
            complete: function () {
                //do final stuff
            }
        });
});

次に、アクション メソッドで、javascript の SavePermissions に入れた各項目のプロパティを持つクラスを作成します。おそらくそれを SavePermissions と呼ぶ必要があります。

public ActionResult AssignPermisionLevel(SavePermissions DTO){
    // save stuff
}

*編集: * これについては考えたこともありませんでしたが、アプリケーションには Newtonsoft.Json への参照があり、これを行うにはおそらくそれが必要になるでしょう...

于 2013-07-18T18:01:09.140 に答える