/ / Cómo comparar el valor de viewbag con el modelo de otro valor en mvc 4 - asp.net-mvc, entity-framework, razor

Cómo comparar el valor de viewbag con otro modelo en mvc 4 - asp.net-mvc, entity-framework, razor

Estoy tratando de enviar viewbag del método de acción aver. Cuando se carga la primera página, el valor de viewbag será nulo. cuando llamo al método de acción CheckPermissions, viewbag obtiene algún valor y devolverá la misma vista que timebag contiene algún valor y ahora quiero comparar el valor de viewbag con otro valor. Lo intenté pero después de aparecer el error. No se puede realizar el enlace de tiempo de ejecución en una referencia nula. Este es mi código de vista de índice.

@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>

}
}

Este es mi método de acción.

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);
}

¿Alguna sugerencia de por qué no puedo comparar valores dentro si es condición? Gracias por adelantado. Esta línea me causa un error si (ViewBag.marlid.equals (permiso)) Edité de la siguiente manera

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>

}

Respuestas

3 para la respuesta № 1

Puede cambiar el código que figura a continuación.

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>
}
}
}

Espero que esto ayude.