C# 如何在不更改url的情况下调用asp.net mvc操作
我有一个带有2个自定义操作的简单控制器。从索引视图中有一个指向id为3的操作MyActionA的链接。然后返回匹配的视图 在视图MyActionA上,提交表单按钮上有一个指向操作HiddenAction的链接 操作HiddenAction仅更新给定模型上的属性。我不想更改客户端浏览器上的URL。但是我想把更新后的模型发送给客户 我尝试了重定向,但它从来没有工作。 有人有主意吗 以下是控制器代码:C# 如何在不更改url的情况下调用asp.net mvc操作,c#,asp.net-mvc,http,asp.net-core,httpresponse,C#,Asp.net Mvc,Http,Asp.net Core,Httpresponse,我有一个带有2个自定义操作的简单控制器。从索引视图中有一个指向id为3的操作MyActionA的链接。然后返回匹配的视图 在视图MyActionA上,提交表单按钮上有一个指向操作HiddenAction的链接 操作HiddenAction仅更新给定模型上的属性。我不想更改客户端浏览器上的URL。但是我想把更新后的模型发送给客户 我尝试了重定向,但它从来没有工作。 有人有主意吗 以下是控制器代码: public class HomeController : Controller { pub
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
public IActionResult MyActionA(int id)
{
if (id <= 0) throw new ArgumentException();
HomeModel model = GetModel();
return View(model);
}
[HttpPost]
public IActionResult HiddenAction(HomeModel model)
{
if (model == null) throw new ArgumentNullException(nameof(model));
model.MyPropB = 999;
//HttpContext.Response.Redirect()
return View(model);
//return Rewrite("MyAtionA/3");
//return RedirectToAction(nameof(MyActionA), 3);
//return View();
}
// Helper
private HomeModel GetModel()
{
return new HomeModel();
}
public class HomeModel
{
public int MyPropA { get; set; }
public int MyPropB { get; set; }
}
}
您必须使用AJAX将数据发回服务器,即通过JavaScript在客户端发出请求。任何其他方法,如HTML表单或链接,都会导致浏览器中的URL发生更改。我认为您需要返回RedirectToActionnameofMyActionA,new{id:3};为了使重定向生效…这是一个很好的解决方案,谢谢。你知道如何在重定向时传递模型吗?RedirectToAction上没有像View上那样的参数“model”。谢谢。AJAX可能是一种方式。到目前为止,我们希望在不使用JS的情况下使用基本组件。我会玩一会儿。