簡體   English   中英

T4MVC - 處理可選參數

[英]T4MVC - Dealing with optional parameters

我正在使用.NET 3.5,MVC 2和T4MVC 2.6.42 ......

我有以下行動:

public virtual ActionResult Index(string id, int page = 1)

以下路線:

routes.MapRoute(
    "Products", // Route name
    "Products/{id}", // URL with parameters
    new { controller = "Products", action = "Index", id = UrlParameter.Optional, page = UrlParameter.Optional }, // Parameter defaults
    new string[] { "Web.Controllers" }
);

但是當我嘗試調用MVC.Products.Index("anything")我得到一個“沒有重載方法'索引'需要'1'參數”異常。 但是,調用MVC.Products.Index()可以正常工作。

我不應該省略“page”參數,因為它默認為'1'?

注意:我已嘗試將路由中的頁面參數默認為1,但無法正常工作。

注2:還嘗試了[可選]屬性但沒有成功。

雖然你弄錯了錯誤的C#版本的問題,但為了將來的參考,有一種方法可以做到這一點。 你可以寫:

MVC.Products.Index().AddRouteValue("id", "anything");

這使您可以添加單個參數的值以及方法調用傳遞的值。

只是讓你的int可以為空,它會工作。

public virtual ActionResult Index(string id, int? page = 1)

就像我在上面對Kirk Woll的回復中所說的那樣,顯然, C#3.0不支持可選參數

我通過創建一個重載並使用NonAction屬性解決了這個問題:

[NonAction]
public ActionResult Index(string id)
{
    return Index(id, 1);
}

然后MVC.Products.Index(“foo”)就像一個魅力,任何C#版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM