我遇到的问题是,当我想在创建页面之后将用户重定向到另一个不是索引页面的页面时。
我尝试在Client文件夹中创建另一个视图,然后替换" index"通过"成功"例如,新页面的名称。
[HttpPost]
public ActionResult Create(Client client)
{
if (ModelState.IsValid)
{
db.Clients.Add(client);
db.SaveChanges();
return RedirectToAction("Index"); // Here is the problem
}
}
我也尝试Redirect("~/Client/Success")
,但它也不起作用。
感谢您的帮助!
答案 0 :(得分:2)
您不仅需要创建名为"成功" (实际上根本不需要),但行动命名为"成功"在你的控制器中:
[HttpPost]
public ActionResult Create(Client client)
{
if (ModelState.IsValid)
{
db.Clients.Add(client);
db.SaveChanges();
return RedirectToAction("Success");
}
return View(); //Looks like you've missed this line because it shouldn't have compiled if result isn't returned in all code branches.
}
public ActionResult Success(Client client)
{
//...
return View();//By default it will use name of the Action ("Success") as view name. You can specify different View if you need though.
}
但是我不会说使用重定向只是为了显示成功结果。您最好在客户端文件夹中创建成功视图(假设您的控制器已命名为" ClientController")然后返回查看结果而不是重定向:
[HttpPost]
public ActionResult Create(Client client)
{
if (ModelState.IsValid)
{
db.Clients.Add(client);
db.SaveChanges();
return View("Success");
}
return View(); //Looks like you've missed this line because it shouldn't have compiled if result isn't returned in all code branches.
}
答案 1 :(得分:0)
这将有效:
return RedirectToAction("Success","Client");
其中Success
是action name
而Client
是controller name
如果要在同一控制器中重定向到“成功”操作,则:
return RedirectToAction("Success");
您的操作在ClientController中应如下所示:
public ActionResult Success()
{
return View();
}
您正在使用:
return RedirectToAction("Index");
这会将您重定向到同一Index
中的actionresult
controller
。
答案 2 :(得分:0)
看看the overloads for that method。您未重定向到网址,而是重定向到操作。因此,这将重定向到当前控制器上的Index
操作:
return RedirectToAction("Index");
或者这将重定向到Success
控制器上的Client
操作:
return RedirectToAction("Success", "Client");
答案 3 :(得分:0)
您可以尝试这样的Ajax请求:
$('#myButton').click(function () {
var url = '/MyControllerName/MyPage';
var $Param = $('#SomeParam').val();
$.ajax({
url: url,
type: 'POST',
cache: false,
data: {
Param: $Param
}
})