我正在尝试提供过滤搜索结果的链接。
<%= 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
任何想法如何解决这个问题?
答案 0 :(得分:2)
代码段看起来很好。我认为有两个可能的错误:
如果仍然无法使其工作,您可能希望发布更多信息(如路线映射代码,视图/控制器名称)
答案 1 :(得分:0)
它看起来应该有效。
您是否确认传递给ActionLink的模型字段实际上包含数据?
答案 2 :(得分:0)
但是,当我调试它时,未正确设置值,甚至是useFilter变量。 我的链接呈现为localhost / home / index / true?page = 0
我认为实际呈现了你的useFilter参数。它映射到我猜的路线。
尝试为searchText设置硬编码值
如果显示,则表示您未在控制器中设置模型。
答案 3 :(得分:0)
我有类似的情况。
这样的事情:
Html.ActionLink("Click me", "Index", "Student",
{ ID = theclass.StudentID }, null)
始终呈现为
localhost/myapp/Student/Index/1234
在我进行实验时,如果我将参数名称从Index
更改为ID
IDX
部分从网址中消失了
localhost/myapp/Student/?IDX=1234
事实证明,参数名称ID
是特殊的,因为Global.asax.cs中的默认路由条目(设置RESTful业务对象访问模式)
要解决此问题,我只是停止使用Index
获取ID,而是定义了另一种方法:
public ActionResult Detail(int ID)
毕竟,根据RESTfull设计原则,Index
用于显示“业务对象列表”或某种业务对象集合,而不是单个业务对象。因此,将业务对象ID传递给Index
有点违反了模式。
而不是扭动手臂并强迫我笨拙的设计,我改变了自然的方式。
我认为设计Index
入口点的最佳做法是保持参数不变,或仅传递过滤/排序参数。