繁体   English   中英

根据值通过Html.ActionLink传递参数

[英]Pass parameter with Html.ActionLink based upon value

在具有分页和搜索选项的网站中,我必须重定向用户并传递搜索选项。 通过此操作,我不想传递带有URL的搜索模型(例如http:// localhost:1234 /?Project.Models.TestModel =...。 )。

我现在的动作链接如下:

@Html.ActionLink(i.ToString(), "Index", new { idtrips = Model.idTrips, inituser = Model.initUser, date = Model.date.ToString("ddMMyyyy"), page = i})

单击时,将导致以下标题: http:// localhost:58763 /?idtrips = 0&inituser = 0&date = 05042016&page = 5

我的问题是:您能否以某种方式将Html.ActionLink的if子句添加为仅在需要时才提供值。 例如,我只设置了一个日期,那么我希望Url为: http:// localhost:58763 /?date = 05042016&page = 5 其他值在我的控制器中具有默认值,因此此url可以工作,但我无法生成它。

我的控制器:

public ActionResult Index(long idtrips = 0, long inituser = 0, string date = "", int page = 1)
    { ... }

我正在寻找的是这样的:

@Html.ActionLink(i.ToString(), "Index", new { if(Model.idTrips > 0) { idtrips = Model.idTrips,} page = i})

您可能可以通过三元语句 (例如inline-if语句)完成此操作:

new { idtrips = Model.idTrips > 0 ? Model.IdTrips : 0, page = i}

由于您具有idtrips的默认参数值,因此仅应将其设置为大于0的其他值。

如果您根本不希望该值出现,则可以考虑将其设置为可为null的long long? 参数(并确保它也与您的模型匹配):

public ActionResult Index(long? idtrips = 0, ... ) { ... }

使用这种方法,您可以简单地按预期设置它:

new { idtrips = Model.idTrips, page = i}

如果Model.idTrips为null(例如默认值),则它将指向:

Controller/Index?page=1

但是,如果它是任何非null值,它将按预期方式呈现querystring参数:

Controller/Index?idtrips=42&page=1  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM