在加载视图之前,我需要从控制器发出 POST 请求,由于我需要某种条件,我想这样做。
条件是:
如果我在合同中有多个产品,则显示合同产品的“菜单”,否则,如果我只有 1 个,则显示该产品的视图而不是“菜单”。
菜单控制器代码是:
public ActionResult MenuApps(){
if (WSKernel.Suscriptions_WebDevices_Get(productosDatos, out productosRespuesta)) {
model.Productos = productosRespuesta.ListSuscriptions_WebDevices;
//si solo se cuenta con un solo producto, hacer redireccion directa al unico producto
if (model.Productos != null && model.Productos.Length == 1){
switch (model.Productos[0].AdmixProduct){
case "Producto1":
return Redirect("http://localhost/Producto1");
case "Producto2":
return Redirect("http://localhost/Producto2");
}
}
}else{//sin productos}
}
但是确实return Redirect("http://localhost/Producto2");
提出了请求HTTP
,因为GET
我想发送信息并且我希望用户不要看到它,因为我需要他始终正确登录。
另一方面,我要重定向的是另一个已经完成的项目,并且这个项目被配置为通过 POST 接收信息。
如何发出 POST 请求并从控制器重定向到页面?
经过几次尝试和大量搜索,我找到了这篇文章,他解释了他所做的尝试,但显然我的第二个想法是正确的,只是在他使用
Helper
.想法
Helper
很简单:对于你要发布的每个键值,我们创建一个隐藏字段,创建表单,然后添加必要的脚本,通过
vPostForm.submit()
从 JavaScript 代码调用它来完成自动提交。因此代码如下:
现在要使用这个私有方法,您需要以下内容:
好的,现在在我的控制器中我会使用这样的东西:
现在是的,必须遵守的条件得到满足:
Samer Abu Rabie代码和信用
如果你想在 MVC 中做一些更简单的事情,有一个像 Fluentx.Mvc (Recommended) 这样的 Nuget 包,你不再需要在文件中创建帮助程序,你只需要导入包
using Fluentx.Mvc;
使用方法是一样的。