我需要根据用户在表单内的下拉框中所做的选择来更改表单的操作,我在 .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/