Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在asp.net mvc中将数据从一个控制器传递到另一个控制器_C#_Asp.net Mvc_Razor - Fatal编程技术网

C# 在asp.net mvc中将数据从一个控制器传递到另一个控制器

C# 在asp.net mvc中将数据从一个控制器传递到另一个控制器,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我是ASP.NETMVC新手。我有RestCallcontroller课程。我想将数据从Restcontroller传递到Home Controller。 这是最新的控制器 public class RestCallController : Controller { public string loginJsonString; Result result = new Result(); // GET: RestCall public async Task<

我是ASP.NETMVC新手。我有
RestCallcontroller
课程。我想将数据从
Restcontroller
传递到
Home Controller
。 这是最新的控制器

public class RestCallController : Controller
{
    public  string loginJsonString;
    Result result = new Result();

    // GET: RestCall
    public async Task<ActionResult> RunAsync(string a, string b)
    {

        using (var handler = new HttpClientHandler { UseDefaultCredentials = true })
        using (var client = new HttpClient(handler))
        {

            var byteArray = Encoding.ASCII.GetBytes("username:password");
            client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
            client.BaseAddress = new Uri("XXX");
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            HttpResponseMessage response = await client.GetAsync("XXX");

            if (response.IsSuccessStatusCode)
            {
                //Get the response
                 loginJsonString = await response.Content.ReadAsStringAsync();
                result.loginJsonStringop = loginJsonString;
                //Json deserialization
                VehicleResponse vehicleobj = JsonConvert.DeserializeObject<VehicleResponse>(loginJsonString);
                List<string> modelList = new List<string>();
                List<string> descriptionList = new List<string>();

                foreach (Vehicle veh in vehicleobj.Vehicles)
                {
                    var model = veh.Model;
                    var Description = veh.Description;
                    modelList.Add(model);
                    var modellist = modelList;
                    descriptionList.Add(Description);
                }
            }
        }
        return RedirectToAction("Index", "HomeController",new { resultop =result });
    }
}
这是我的模型课

public class Result
    {
        public string loginJsonStringop { get; set; }
        public string modelop { get; set; }
        public string descriptionop { get; set; }
    }

我想将loginJsonString、modelList、descriptionList的值传递给
Home Controller
中的
index()
方法,并在索引视图中查看该值。如果您有任何建议,请帮助我。

我们在MVC中有
TempData
来将数据从一个控制器传递到另一个控制器。你甚至可以参考

在您的第一个控制器中,您可以做一些事情

TempData[“jsonData”]=任何_对象

然后在你的家庭控制器里你可以得到它

var object=TempData[“jsonData”]


更新


要记住的临时数据限制

但是有一个陷阱。。只有第一次调用控制器时,临时数据才可用。如果您在rest控制器之后重定向到home pass,您将能够在home controller中获取临时数据,但如果您执行了一些重定向,然后又重定向到home,并尝试获取临时数据,则将无法工作。如果您需要,并认为创建适当的模型,并将其传递给主控制器是一个很好的解决方案

更新 您正在尝试使用模型传递数据,然后您可以做一些事情--


我们在MVC中有
TempData
,用于将数据从一个控制器传递到另一个控制器。你甚至可以参考

在您的第一个控制器中,您可以做一些事情

TempData[“jsonData”]=任何_对象

然后在你的家庭控制器里你可以得到它

var object=TempData[“jsonData”]


更新


要记住的临时数据限制

但是有一个陷阱。。只有第一次调用控制器时,临时数据才可用。如果您在rest控制器之后重定向到home pass,您将能够在home controller中获取临时数据,但如果您执行了一些重定向,然后又重定向到home,并尝试获取临时数据,则将无法工作。如果您需要,并认为创建适当的模型,并将其传递给主控制器是一个很好的解决方案

更新 您正在尝试使用模型传递数据,然后您可以做一些事情--


可能重复的可能重复的感谢。请你解释一个例子。你可以检查这两个链接。首先,我们设置临时数据,然后重定向到第二个控制器,直接访问视图中的临时数据。在第二个示例中,设置数据,然后将数据放入控制器中,如果需要,您可以更改这些数据,然后传递到视图。您可以对该数据执行任何操作。我创建了一个结果类,并将json值分配给该类的一个字段。然后尝试将结果类的对象作为'result result=TempData[“result”]作为result;'但我仍然无法获取值。您如何从“RestController”重定向到“HomeController”?您能否创建donetfiddle并共享??返回重定向到操作(“索引”、“HomeController”、新的{ResultTop=result});谢谢。请你举例说明。你可以检查这两个链接。首先,我们设置临时数据,然后重定向到第二个控制器,直接访问视图中的临时数据。在第二个示例中,设置数据,然后将数据放入控制器中,如果需要,您可以更改这些数据,然后传递到视图。您可以对该数据执行任何操作。我创建了一个结果类,并将json值分配给该类的一个字段。然后尝试将结果类的对象作为'result result=TempData[“result”]作为result;'但我仍然无法获取值。您如何从“RestController”重定向到“HomeController”?您能否创建donetfiddle并共享??返回重定向到操作(“索引”、“HomeController”、新的{ResultTop=result});
public class Result
    {
        public string loginJsonStringop { get; set; }
        public string modelop { get; set; }
        public string descriptionop { get; set; }
    }
public async Task<ActionResult> RunAsync(string a, string b)
{
  ...
  ...
  ...
  Result obj = new Result();
  obj.loginJsonStringop = "VALUE_OF_FIELD";
  ...
  ...
  ...
  return RedirectToActtion("Index", "HomeController",new { resultop =result });
}
public class HomeController : Controller
{       
    public ActionResult Index(Result resultop)
    {
        // do whatever you want to do with your "resultop" instance of type "Result"
        var value = resultop.loginJsonStringop;    // "VALUE_OF_FIELD"

        return View();
    }
}