C# 如何在不更改url的情况下调用asp.net mvc操作

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

我有一个带有2个自定义操作的简单控制器。从索引视图中有一个指向id为3的操作MyActionA的链接。然后返回匹配的视图

在视图MyActionA上,提交表单按钮上有一个指向操作HiddenAction的链接

操作HiddenAction仅更新给定模型上的属性。我不想更改客户端浏览器上的URL。但是我想把更新后的模型发送给客户

我尝试了重定向,但它从来没有工作。 有人有主意吗

以下是控制器代码:

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的情况下使用基本组件。我会玩一会儿。