MVC。 HttpPost 后看不到视图
MVC. Cant see view after HttpPost
我的主页上的搜索按钮有以下代码:
<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>
我的控制器中也有以下代码:
[HttpPost]
public ActionResult SearchPost(string txt_name)
{
return RedirectToAction("Search", new { txt_name =txt_name });
}
public ActionResult Search(string txt_name)
{
......
return View("Search");
}
并在 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 });
如果我这样调用- http://localhost:55419/Home/search/126 - 它工作正常。
但是如果我点击 "Search" 按钮,应用程序不会显示页面 "Search"!!
首先转到 "SearchPost" 操作,然后 "Search"。没有错误。但是最后一行不起作用:
return View("Search");
应用程序不显示视图 "search",仅显示上一页。
怎么了?。
试试这个
[HttpPost]
public ActionResult SearchPost(string txt_name)
{
return JavaScript(string.Format("window.location = '{0}'", Url.Action("Search", "Controller"));
}
你必须确保 url 到 Search
操作方法是正确的,我不知道控制器名称是什么。
理论是,由于您已发出客户端 ajax 请求,因此 returning View("Search")
将无法用于您的情况。相反,return 一个 JavaScript
操作结果,其中包含将浏览器重定向到搜索页面的命令。您可以将查询字符串参数添加到 url 或您需要的任何其他内容,以传递给 Search
操作方法。
我的主页上的搜索按钮有以下代码:
<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>
我的控制器中也有以下代码:
[HttpPost]
public ActionResult SearchPost(string txt_name)
{
return RedirectToAction("Search", new { txt_name =txt_name });
}
public ActionResult Search(string txt_name)
{
......
return View("Search");
}
并在 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 });
如果我这样调用- http://localhost:55419/Home/search/126 - 它工作正常。 但是如果我点击 "Search" 按钮,应用程序不会显示页面 "Search"!!
首先转到 "SearchPost" 操作,然后 "Search"。没有错误。但是最后一行不起作用:
return View("Search");
应用程序不显示视图 "search",仅显示上一页。 怎么了?。
试试这个
[HttpPost]
public ActionResult SearchPost(string txt_name)
{
return JavaScript(string.Format("window.location = '{0}'", Url.Action("Search", "Controller"));
}
你必须确保 url 到 Search
操作方法是正确的,我不知道控制器名称是什么。
理论是,由于您已发出客户端 ajax 请求,因此 returning View("Search")
将无法用于您的情况。相反,return 一个 JavaScript
操作结果,其中包含将浏览器重定向到搜索页面的命令。您可以将查询字符串参数添加到 url 或您需要的任何其他内容,以传递给 Search
操作方法。