c# - MVC4 根据用户选择动态更改表单的操作

标签 c# asp.net asp.net-mvc asp.net-mvc-4

我需要根据用户在表单内的下拉框中所做的选择来更改表单的操作,我在 .NET 4.5 上有一个 MVC4/C# 项目

用户做出的选择将影响需要调用哪个 Controller 或哪个操作。

我做了一些搜索,并归结为几个解决方案:

  • 实现 JQuery 客户端以动态更改表单的操作
  • 让表单转到专门用于将请求路由到适当的 Controller /操作的特定操作

据我所知,人们建议不要使用 JQuery,因为您无法确定客户端是否正在运行 javascript,以及类似的问题。

我一直在玩我的第二个选择,我一直在尝试使用 RedirectToAction 在开关 block 内执行路由,但是它不适用于 POST 数据,因为重定向会导致获取。

我在 Controller 中尝试的示例如下:

    [HttpPost]
    public ActionResult Index(TestObject object)
    {
        switch (object.Type) {

            case("A"):
                return RedirectToAction("ActionA");
            case ("B"):
                return RedirectToAction("ActionB");
            case ("C"):
                return RedirectToAction("ActionC");
            default:
                ModelState.AddModelError("", "Invalid Type");
                return View();
        }
    }

    [HttpPost]
    public ActionResult ActionA(TestObject object)
    {
            // Do Stuff for ActionA
            return View();
    }

这是我创建的第一个 MVC 项目,所以我想知道如果每个人都一直说在这种情况下不要使用 JQuery,什么才是正确的方法。

如果第二个选项是“正确”的解决方案,我该如何将数据发送到备用 Controller 操作?

最佳答案

您可以执行类似以下操作,即将表单值作为路由值传递:

RedirectToAction("ACTIONNAME", "CONTROLLERNAME", ROUTEVALUES);

例如

this.RedirectToAction("displayimport", "coilenquiry", new { Number = number });

然后在您的操作中,使用参数...

    public ActionResult DisplayImport(string Number)
    {

    }

关于c# - MVC4 根据用户选择动态更改表单的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18891698/

相关文章:

c# - 使用多个 edmx(来自不同数据库)以及工作单元和存储库模式

c# - 如何解析不同类型服务的 IEnumerable

c# - SignalR 和 ASP.NET Identity 的 UserManager 类生命周期

c# - 在多个复选框上进行循环

c# - 使用静态字典时,我在 ASP.NET 中收到错误 "Item has already been added."

c# - 如何将多个相同的功能类( Controller )组合成一个以数据对象作为参数的类?

c# - 无法将 lambda 表达式转换为类型 'CookieAuthenticationOptions',因为它不是委托(delegate)类型

c# - 为什么我的代码会泄漏连接?

c# - 使用 SharePoint Online 和 CSOM .NET Standard 更新用户配置文件的 Azure Functions 拒绝访问

c# - 从同一解决方案中另一个项目的 View 调用类库中的函数