Ich versuche Viewbag von Action-Methode zu sendenAussicht. Wenn die erste Seite den viewbag-Wert lädt, ist null. Wenn ich die CheckPermissions-Methode aufrufen, erhält viewbag einen Wert und es wird die selbe Ansicht zurückgegeben, in der viewbag einen Wert enthält. Jetzt möchte ich den viewbag-Wert mit einem anderen Wert vergleichen. Ich habe versucht, aber folgenden Fehler erscheint. Laufzeitbindung für eine Nullreferenz kann nicht ausgeführt werden. Dies ist mein Indexansichtscode.
@model c3card.Models.GroupPermissionVM
@{
ViewBag.Title = "Index";
}
@using (Html.BeginForm())
{
@Html.LabelFor(m=>m.GroupID)
@Html.DropDownListFor(m => m.GroupID, Model.GroupList, "Please select", new { id = "ddlgrp" })
foreach(var permission in Model.Permissions)
{
if (ViewBag.marlid.equals(permission))
{
<label>
@Html.RadioButtonFor(m => m.perm_id, permission.perm_id, new {@checked="true"})
<span>@permission.perm_levelname</span>
</label>
}
else
{
<label>
@Html.RadioButtonFor(m => m.perm_id, permission.perm_id)
<span>@permission.perm_levelname</span>
</label>
}
}
Dies ist meine Aktionsmethode
public ActionResult CheckPermissions(int id)
{
var groups = db.tm_grp_group.Where(a => a.grp_isactive == true);
var permissions = db.tm_perm_level;
GroupPermissionVM model = new GroupPermissionVM
{
marlid=db.ts_grp_perm_mapping.Select(p=>p.grp_id==id).Count(),
GroupList = new SelectList(groups, "grp_id", "grp_name"),
Permissions = permissions.Select(p => new PermissionVM
{
perm_id = p.perm_id,
perm_levelname = p.perm_levelname
})
};
ViewBag.marlid = db.ts_grp_perm_mapping.Select(p => p.grp_id == id).Count();
return View("Index",model);
}
Irgendein Vorschlag, warum ich nicht im Stande bin, Werte innerhalb zu vergleichen, wenn Bedingung? Danke im Voraus. Diese Zeile verursacht einen Fehler if (ViewBag.marlid.equals (permission)) Ich habe wie folgt bearbeitet
foreach(var permission in Model.Permissions)
{
if(Model.marlid==permission.perm_id)
{
<label>
@Html.RadioButtonFor(m => m.perm_id, permission.perm_id,new { @checked = true } )@Model.marlid.ToString()
<span>@permission.perm_levelname</span>
</label>
}
Antworten:
3 für die Antwort № 1Sie können den unten angegebenen Code ändern
if(ViewBag.marlid != null && Model.Permissions != null)
{
foreach(var permission in Model.Permissions)
{
if(ViewBag.marlid == permission.perm_id)
{
<label>
@Html.RadioButtonFor(m => m.perm_id, permission.perm_id,new { @checked = true } )@Model.marlid.ToString()
<span>@permission.perm_levelname</span>
</label>
}
}
}
Hoffe das hilft.