I have the following code for the search button on my MasterPage:
<form id="form1" runat="server">
<input type="text" value="Поиск" size="25" class="search-form" id="txt_search" name="txt_search" />
<button type="submit" name="b_search" id="b_search" value="1" class="but-search" onclick="javascript:MySaveFunc(txt_search); "> </button>
<script type="text/javascript">
function MySaveFunc(rec) {
var new_name = rec.value;
$.ajax({
url: '/Home/SearchPost',
type: "POST",
cache: false,
data: {
txt_name: rec.value
},
success: function (data) {
},
error: function (data) {
}
});
return false;
}
</script>
</form>
I also have the following code in my Controller:
[HttpPost]
public ActionResult SearchPost(string txt_name)
{
return RedirectToAction("Search", new { txt_name =txt_name });
}
public ActionResult Search(string txt_name)
{
......
return View("Search");
}
And in global.asa
routes.MapRoute("Search", "Home/Search/{txt_name}", new { controller = "Home", action = "Search", txt_name = UrlParameter.Optional });
routes.MapRoute("SearchPost", "Home/SearchPost/{txt_name}", new { controller = "Home", action = "SearchPost", txt_name = UrlParameter.Optional });
If i call like this- http://localhost:55419/Home/search/126 - It's works fine. But if I click on the "Search" button , the application does not show the page "Search"!!
First go to the "SearchPost" action, then "Search". Without errors. But the last line is not working:
return View("Search");
The application does not show view "search", only the previous page. What's wrong ?.
Try this
You will have to make sure the url to the
Searchaction method is correct, I don't know what the controller name is.The theory is that since you have made a client-side ajax request, returning
View("Search")won't work in your case. Instead, return aJavaScriptaction result with a command to redirect the browser to the search page. You can add querystring params to the url, or whatever else you need, to pass to theSearchaction method.