0

ゴール:

actionresult Anvandare_Listaa に 2 つのパラメーター (1 つの文字列と 1 つの bool) を実現したいと考えています。

    //
    // GET: /Admin/Anvandare_Listaa

    public ActionResult Anvandare_Listaa(string pAnvandaren, bool pBlivenAdministrator)
    {
        return View("Anvandare_Lista");
    }

問題:
アクション結果で bool 値 pBlivenAdministrator を受け取ることができません。エラーメッセージが表示されます。

パラメーター ディクショナリには、'BokButik1.Controllers.AdminController' のメソッド 'System.Web.Mvc.ActionResult Anvandare_Listaa(Boolean)' の null 非許容型 'System.Boolean' のパラメーター 'pBlivenAdministrator' の null エントリが含まれています。オプションのパラメーターは、参照型または null 許容型であるか、オプションのパラメーターとして宣言する必要があります。パラメータ名: パラメータ

ブールを使用する場合は?bool の代わりに値を取得しません。string を使用する場合は問題ありません。アクション結果の bool に関する問題のみです。

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>


4

2 に答える 2

1

アクションリンクを生成するとき:

<%: Html.ActionLink(
    Html.OmAdministratorBehorighet(user.BlivenAdministrator), 
    "Anvandare_Listaa", 
    "Admin", 
    new {
        pAnvandaren = user.Anvandaren, 
        pBlivenAdministrator = user.BlivenAdministrator 
    }
) %>

生成されたHTMLが次のようになるように、パラメーターに値が割り当てられていることを確認する必要がありpBlivenAdministratorます。

<a href="/Admin/Anvandare_Listaa?pAnvandaren=abc&amp;pBlivenAdministrator=true">
    Some Text
</a>

pBlivenAdministratorリクエストにパラメータが含まれていない場合、この例外が発生します。したがって、次のいずれかになります。

/Admin/Anvandare_Listaa?pBlivenAdministrator=true

また:

/Admin/Anvandare_Listaa?pBlivenAdministrator=false
于 2011-01-27T20:56:56.927 に答える
1

2つの引数を取るルートを作成します。デフォルトルートは、単一の引数「id」のみを取ります。引数pAnvandarenとpAnvandarenを使用して新しいルートを作成します。

于 2011-01-27T20:58:35.443 に答える