C# 在asp.net mvc中将数据从一个控制器传递到另一个控制器
我是ASP.NETMVC新手。我有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<
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();
}
}