题
我试图提供一个链接到搜寻过滤器的结果。
<%= Html.ActionLink("Filter Results", "Index", new { page = Model.RestaurantList.PageIndex(), searchText = Model.SearchText, useFilter = true, filterOption = Model.FilterOption, filterText = Model.FilterText }, null)%>
控制器的定义是这样
public ActionResult Index(int? page, string searchText, bool useFilter, string filterText, string filterOption)
然而,当我调试这个价值没有设置适当,即使是useFilter变量。
我的链接呈现"localhost"/home/index/true?page=0
任何想法如何解决这个问题?
解决方案
代码段看起来很好。我想有2个可能的错误:
- 错误的路线的信息:检查 路线。图路线的(...)通话 全球性的。ascx.cs/vb文件,以确保 一个路线,为家#索行动 正确配置
- 错误的控制器:尝试使用载的ActionLink其中明确指定一个控制器
如果你仍然不能使它的工作,你可能会想要张贴更多的信息(如路线的映射代码,名视/控制器)
其他提示
它看起来像它应该工作。
您是否已经验证您传递给ActionLink的模型领域实际包含数据的?
然而,当我调试此值没有被正确设置,即使是useFilter变量。 我的链接呈现本地主机的/ home /索引/真的吗?页= 0
我觉得你useFilter参数实际呈现。其映射到I猜测的路由。
尝试为SEARCHTEXT设置硬编码的值
如果它出现,那么你没有设置你的模型在控制器中。
我有一个类似的情况。
像这样:
Html.ActionLink("Click me", "Index", "Student",
{ ID = theclass.StudentID }, null)
总是呈现为
localhost/myapp/Student/Index/1234
当我尝试,我注意到,Index
部分从URL中消失了,如果我从ID
更改参数名称类似IDX
localhost/myapp/Student/?IDX=1234
原来,参数名称ID
是因为在Global.asax.cs中的默认路由条目(其设置的RESTful业务对象访问模式)
要解决这个问题,我简单地使用Index
以ID停止代替这样定义的另一种方法:
public ActionResult Detail(int ID)
毕竟,每个问题的REST设计原则,Index
是为显示“业务对象的上市”或某种业务对象,而不是一个单一的业务对象的集合。因此,通过业务对象ID Index
是一种违反格局。
而不是扭曲的手臂,迫使我笨拙的设计,我改成自然的方式。
相信用于设计Index
入口点最好的做法是保持它的参数少,或通过仅过滤/排序参数。
不隶属于 StackOverflow