【发布时间】:2013-10-18 21:10:56
【问题描述】:
我对 MVC 很陌生,只是学习基础知识。我一直在关注 Nerd Dinner 并使用该演示来创建我自己的应用程序。我创建了一个页面,列出了一些含有卡路里、脂肪、蛋白质等的食物... (http://rjsfitness.net/CalorieList) 这是我自己的个人网站之一,我设置它来测试 MVC。我做了很多工作,但我被困在带有搜索按钮的文本框上。
我的查看页面有这个搜索代码:
<form action="/CalorieList/Search" method="post" id="searchForm">
<input type="text" name="searchTerm" id="searchTerm" value="" size="10" maxlength ="30" />
<input type ="submit" value="Search" />
</form>
我的 global.asax 有这个路由代码:
routes.MapRoute(
"Search", // Route name
"CalorieList/Search/{searchTerm}", // URL with parameters
new { controller = "CalorieList", action = "Search", search = "" } // Parameter defaults
);
我的控制器有这个代码:
public ActionResult Index(int? page)
{
const int pageSize = 10;
//load a list with the calorie list
var calorieLists = calorieListRepository.GetAllCalorieLists();
//var paginatedCalorieLists = calorieLists.Skip((page ?? 0) * pageSize).Take(pageSize).ToList();
var paginatedCalorieLists = new PaginatedList<CalorieList>(calorieLists, page ?? 0, pageSize);
return View("Index", paginatedCalorieLists);
}
public ActionResult Search(String searchTerm)
{
const int pageSize = 100;
int? page = 0;
var calorieLists = calorieListRepository.GetCalorieListsBySearch(searchTerm);
var paginatedCalorieLists = new PaginatedList<CalorieList>(calorieLists, page ?? 0, pageSize);
return View("Index", paginatedCalorieLists);
}
return View("Index", paginatedCalorieLists);
}
当我输入一个值并单击按钮时,会触发 Index 方法而不是控制器中的 Seach 方法,然后我会再次获得完整列表。如果我手动输入网址 (http://rjsfitness.net/CalorieList/Search/choc),我会得到正确的列表。
为什么我的按钮没有使用正确的路由点击并给我搜索结果?
【问题讨论】:
标签: c# asp.net .net asp.net-mvc