c# - ASP.NET MVC C# - 将数据从控制器传递到类
问题描述
我有两个类库,一个用于我的“后端”代码,一个用于项目的 WebInterface 端。
我使用 Ajax/Jquery 将两个变量(UserId 和 EnvId)传递给我项目 WebInterface 端的控制器。然后,我需要将这两个值从 Var 传递到另一个类库,以运行几种解锁用户帐户的方法。
下面是来自我的控制器的代码(这里的代码当前将 console.log 消息发布回浏览器,我知道我得到了正确的 ID)
[HttpPost]
public ActionResult UnlockUserAction(string UserId, string EnvId)
{
var user = UserId;
var environment = EnvId;
if (user == "" || user == "0")
{
return Json("Error - The User doesn't exist or there was an error", JsonRequestBehavior.AllowGet);
}
else
{
//pass userid & envid to UnlockUser Class will go here
var result = user + " | " + environment;
return Json(result, JsonRequestBehavior.AllowGet);
}
}
这是我来自“后端”类库的代码;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;
namespace UserImportInterfaceLibrary
{
public class UnlockUser
{
//Get Environment SQL
public string sql = "SELECT Server,Catalog,UserName,UserPwd FROM tbl_Environments WHERE Description = @environment";
//Unlock User String
public string unlockSQL = "UPDATE User_Account_Data SET Account_Locked = 0 WHERE User_ID = @userid";
public void getEnvironment(EnvId)
{
var envData = EnvId;
}
}
}
解决方案
您可以通过多种方式执行此操作。在类库的构造函数中或通过使用执行逻辑的方法创建无参数构造函数将其用作服务。
在理想的解决方案中,我建议将您的代码分成三个项目。一个访问'您的数据并获得您需要的一切的人。一种使用从数据层接收到的数据来处理所有逻辑的方法。最后,您的 MVC 项目只处理逻辑层。
暂时回答你的问题:
public class UnlockUser
{
public UnlockUser(string user, string env)
{
//Do logic with params
}
}
在您的控制器中添加:
else
{
//pass userid & envid to UnlockUser Class will go here
var foo = new UnlockUser(userId, envId);
var result = user + " | " + environment;
return Json(result, JsonRequestBehavior.AllowGet);
}
或者:
在您的类中添加无参数构造函数和一个采用您的参数并执行一些逻辑的方法。像这样使用它:
public class UnlockUser
{
public UnlockUser()
{ }
public <YourResultObject> <YourNewMethod> (string userId, string envId)
{
//Do some logic
return <YourResultObject>;
}
}
在您的控制器方法中:
var foo = new UnlockUser();
foo.YourNewMethod(userId, envId);`
推荐阅读
- arrays - 根据对象的键在对象的 JSON 列表中查找条目
- laravel - 网址重定向到 xampp 页面而不是主站点 | 拉拉维尔
- visual-studio-code - VS Code更改在侧边/滚动条区域中查找所有匹配项的颜色
- npm - 即使在安装了对等依赖项之后,也会出现未满足的对等依赖项警告
- android - 尝试加载 System.loadLibrary("loader-jni") 时应用程序崩溃
- sql - 如何使用另一个表的新创建的 PK 更新 1 个表中的值
- java - 无法使用 Spring Webflux Webclient 映射二级 json 值
- angular - Angular - 在模块定义中使用动态变量
- c++ - C++ 中使用什么类型来定义数组大小?
- winston - 为什么winston 从 Logger 转移到 createLogger