gpt4 book ai didi

c# - 使用 HttpGet 重定向循环 MVC3 搜索表单

转载 作者:太空宇宙 更新时间:2023-11-03 16:36:51 25 4
gpt4 key购买 nike

希望有人能提供帮助,因为我昨天晚上的大部分时间都在绞尽脑汁!基本上,我正在尝试使用 HttpGet 获取一个搜索表单,这样我就可以通过 URL 从外部源检索结果,例如:

http://url.com/Area/Controller/Action/SearchCategory/SearchCriteria

我创建了一个模型并将其传递到我的 View ,其中包含 SearchCategorySearchCriteria 的两个属性,并且在 View 中有关联的 HTML 控件。如果我选择一个类别并为我的标准输入一些内容,这将非常有效。但是,如果我没有在我的标准中输入任何内容,我将获得无限重定向。我针对此特定功能的路线如下所示:

context.MapRoute(
"Dashboard-Search",
"Area/Controller/Action/{SearchCategory}/{SearchCriteria}",
new {
controller = "Controller",
action = "Action",
SearchCategory = "",
SearchCriteria = ""
}
);

我的模型确实实现了 IValidateableObject 并验证是否输入了某些内容,但显然路由绑定(bind)是在验证任何内容之前完成的。

有什么想法吗???

路线

context.MapRoute(
"Dashboard-Search-NoCriteria",
"HEP/Dashboard/Search/{category}",
new { controller = "Dashboard", action = "Search", category = "Case No" }
);

context.MapRoute(
"Dashboard-Search",
"HEP/Dashboard/Search/{category}/{criteria}",
new { controller = "Dashboard", action = "Search", category = "Case No", criteria = "" }
);

Controller Action

[HttpGet]
public ActionResult Search(string SearchCategory, string SearchCriteria)
{
// create new instance of model and add search criteria so entered
// data persists on post back
DashboardModel model = new DashboardModel() {
SearchCategory = SearchCategory,
SearchCriteria = SearchCriteria
};
model.Search(SearchCategory, SearchCriteria);

// return the HTML view of another controller that displays the same list,
// only this time, the list is filtered according to GET data
return View("Overview", model);
}

HTML 表单

@using (Html.BeginForm("Search", "Dashboard", FormMethod.Get)) {

@Html.LabelFor(m => m.SearchCategory, "Category:")
@Html.DropDownListFor(m => m.SearchCategory, new List<SelectListItem>() {
new SelectListItem() { Selected = true, Text = "Category", Value = "Category" }
})

@Html.LabelFor(m => m.SearchCriteria, "Criteria:")
@Html.TextBoxFor(m => m.SearchCriteria)

<input type="submit" value="Search" class="button" />

}

最佳答案

您现在的路线与您的搜索表单不符。

满足您的 Dashboard-Search 路线的 URL 应该如下所示

http://example.com/HEP/Dashboard/Search/SampleCategory/SampleCriteria

您的表单将依次生成一个 GET 请求到 URL,如下所示:

http://example.com/HEP/Dashboard/Search/?Category=SampleCategory&Criteria=SampleCriteria

很可能你的方法 Search(string SearchCategory, string SearchCriteria) 从未被调用过 - 我建议你的请求被重定向回只显示你的搜索 View 而不实际执行的方法任何搜索。

如果您需要更多解释或代码,请显示完整 RegisterRoutes 方法。

关于c# - 使用 HttpGet 重定向循环 MVC3 搜索表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8831931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com