2011-01-27 40 views
0

目標:Bres問題在ActionResult

我想實現我的actionresult Anvandare_Listaa兩個參數(一個字符串和一個布爾)。

// 
    // GET: /Admin/Anvandare_Listaa 

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

問題:
不能收到布爾值pBlivenAdministrator在我的行動的結果。我收到錯誤消息。

參數字典包含參數方法 非可空 類型「System.Boolean」的 「pBlivenAdministrator」一個 空條目中 「System.Web.Mvc.ActionResult Anvandare_Listaa(布爾)」 'BokButik1.Controllers.AdminController'。 可選參數必須是 參考類型,可爲空的類型,或者將其聲明爲可選參數 。 參數名稱:參數

如果我使用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> 


+0

小備註: 我不知道pBlivenAdministrator代表什麼,但由於它包含單詞admin,它似乎給予調用者一定的權利。 因爲非pBlivenAdministrator可以通過更改瀏覽器中的查詢字符串輕鬆地成爲一個字符串,所以在查詢字符串中使用它不是一個好主意。 ;-) – santiagoIT 2011-01-27 21:13:17

回答

1

當生成你的動作鏈接:

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

你應該確保該pBlivenAdministrator參數賦值,使生成的HTML看起來像這樣:

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

如果該請求不包含pBlivenAdministrator參數你會得到這個例外。因此,它應該是:

/Admin/Anvandare_Listaa?pBlivenAdministrator=true 

或:

/Admin/Anvandare_Listaa?pBlivenAdministrator=false 
1

作出這樣的需要兩個參數的路由。默認路由只需要一個參數「id」。用你的論點pAnvandaren和pAnvandaren創建一條新路線。

+0

你有沒有可能展示一個具體的例子?我仍然是一個新手 – 2011-01-27 21:21:24