MVC get和post-action方法是否共享参数值



我是MVC的新手,想知道为什么/如何发生以下情况。在我的控制器中,TEST方法有两个操作方法,一个用于Get,另一个用于Post。每个都包含一个"sortby"参数。当我调用Get方法时,"sortby"被设置为"ABC"。单击提交按钮并调用Post方法时,Post方法的"sortby"参数的值为"ABC"。我的问题是为什么?没有隐藏字段值,模型不包含"排序依据"字段。

    public ActionResult Test(string sortby = "")
    {
        return View(myModel);
    }
    [HttpPost]
    public ActionResult Test(modelType myModel, string sortby = "")
    {
        return View(myModel);
    }

不同操作的请求之间不共享任何。唯一存在的是请求中包含的内容(GET的查询字符串、post的帖子正文以及URL本身)。

您没有提供任何关于URL设置方式的信息,但假设您有一个类似/test/{sortby}的路由,当您回发到该URL时,sortby参数将从URL中填充,就像使用GET一样。否则,它必须包含在要填充的帖子正文中,这意味着表单中的某个位置确实有一个隐藏的字段,其中包含该值。

您是在GET之后调用POST吗?GET返回带有myModel数据的视图(很可能是定义的sortby参数)?我只是猜测,需要更多的信息来告诉你为什么会发生这种情况,但他们不应该分享任何信息。不知怎么的,你告诉这两种方法都要使用这些params。

最新更新