首页 > 解决方案 > 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;
    }
}  

}

标签: c#asp.net-mvc

解决方案


您可以通过多种方式执行此操作。在类库的构造函数中或通过使用执行逻辑的方法创建无参数构造函数将其用作服务。

在理想的解决方案中,我建议将您的代码分成三个项目。一个访问'您的数据并获得您需要的一切的人。一种使用从数据层接收到的数据来处理所有逻辑的方法。最后,您的 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);`

推荐阅读