![](/img/trans.png)
[英]pass data from one controller action to another controller action in ASP.Net MVC 5
[英]Passing data from one controller to another in asp.net mvc
我是ASP.NET MVC的新手。 我有RestCallcontroller
類。 我想將數據從Restcontroller
傳遞到Home Controller
。 這是RestController
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 });
}
}
以下是我的HomeController
。
public class HomeController : Controller
{
string a;
string b;
// GET: Home
public ActionResult Index(Result resultop)
{
RestCallController restcallController = new RestCallController();
restcallController.RunAsync(a,b);
resultop.loginJsonStringop = restcallController.loginJsonString;
return View(resultop);
}
}
這是我的模型課。
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”] = ANY_OBJECT;
然后在您的家庭控制器中就可以得到它。
var object = TempData [“ jsonData”];
更新
臨時數據限制
但是有一個陷阱..臨時數據僅在第一次調用控制器時可用。 如果您在rest控制器之后重定向到home pass,則可以在home控制器中獲取臨時數據,但是如果您進行了一些重定向,然后您定向到home,並嘗試獲取臨時數據,則它將不起作用。 如果需要的話,可以考慮創建適當的模型並將其傳遞給家庭控制器是一個很好的解決方案。
更新您嘗試使用模型傳遞數據,然后您可以做一些事情。 -
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 });
}
然后主控制器必須在“ Index
操作中接收此模型。
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();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.