Objectif:problème Bool à ActionResult
Je veux obtenir deux paramètres (une chaîne et un bool) à mon ActionResult Anvandare_Listaa.
//
// GET: /Admin/Anvandare_Listaa
public ActionResult Anvandare_Listaa(string pAnvandaren, bool pBlivenAdministrator)
{
return View("Anvandare_Lista");
}
Problème:
Impossible de recevoir pBlivenAdministrator valeur bool dans mon résultat de l'action. Je reçois un message d'erreur.
Les paramètres dictionnaire contient une entrée nulle pour paramètre 'pBlivenAdministrator' de type non annulable 'System.Boolean' pour la méthode 'System.Web.Mvc.ActionResult Anvandare_Listaa (booléen)' dans 'BokButik1.Controllers.AdminController'. Un paramètre facultatif doit être un type de référence , un type Nullable, ou être déclaré en tant que paramètre facultatif. Nom du paramètre: paramètres
Si j'utilise bool? au lieu de bool, je n'aurai aucune valeur. Il n'y a pas de problème quand j'utilise une chaîne, c'est seulement un problème lié à bool dans le résultat de l'action.
public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
}
}
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Admin.Master" Inherits="System.Web.Mvc.ViewPage<BokButik1.ViewModels.AllaAnvandareViewModel>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Användare Lista
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>Användare Lista</h2>
<table>
<tr>
<th>Användare</th>
<th>E-post</th>
<th>Administratör</th>
</tr>
<% foreach (var user in Model.AllaAnvandare) { %>
<tr>
<td>
<%: user.Anvandaren %>
</td>
<td>
<%: user.Epost%>
</td>
<td>
<%: user.BlivenAdministrator %>
</td>
<td>
<%: Html.ActionLink(Html.OmAdministratorBehorighet(user.BlivenAdministrator),
"Anvandare_Listaa", "Admin", new {pAnvandaren = user.Anvandaren, pBlivenAdministrator = user.BlivenAdministrator }) %>
</td>
</tr>
<% } %>
</table>
Petite remarque: Je ne sais pas ce que signifie pBlivenAdministrator, mais comme il contient le mot admin, il semble donner certains droits à l'appelant. Ce n'est pas une bonne idée d'avoir cela dans votre chaîne de requête car un non pBlivenAdministrator peut facilement le devenir en changeant la chaîne de requête dans le navigateur. ;-) – santiagoIT