如何在MVC中将响应从一个控制器传递到另一个控制器?
问题描述:
我有一个名为clientjobdescriptionscontroller.cs的控制器。
I have a controller named clientjobdescriptionscontroller.cs.
//clientjobdescriptionscontroller.cs
[HttpGet]
public void Download(string format, string requests)
{
List<string> req = requests.Split(',').ToList();
foreach (var item in req)
{
RequestController controller = new RequestController();
if (format == "I")
{
Response.Write("rakesh");
controller.DownloadrequirementsInternalUse(Convert.ToInt64(item));
}
if (format == "R")
{
controller.DownloadrequirementsRecruitmentPartner(Convert.ToInt64(item));
}
if (format == "CA")
{
controller.DownloadrequirementsCandidate(Convert.ToInt64(item));
}
if (format == "CR")
{
controller.Downloadrequirementscustomer(Convert.ToInt64(item));
}
}
}
我还有另一个名为RequestController的控制器。来自该控制器的方法在第一个控制器中被调用。
again I have another controller named RequestController. The methods from this controller is getting called in the first controller.
// RequestController
public void DownloadrequirementsInternalUse(long Id)
{
var result = requestService.GetResourceAvailability(Id);
JobDescriptionPdfDownload jobDescriptionPdfDownload = new JobDescriptionPdfDownload();
string strOutput = jobDescriptionPdfDownload.DownloadrequirementsInternalUse(Id);
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=JD-Internal-Use-" + result.RequestCode + ".pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
CreatePdf(strOutput);
}
我的尝试:
我试图将响应作为参数传递,但我抛出错误。
What I have tried:
I have tried to pass the response as parameter but i throws error.
答
这是因为当MVC发生回发时,空页来了因此,您必须先将数据保存在TempData中,然后在另一个控制器中使用该TempData。
Tempdata用于将数据从一个控制器传输到另一个控制器。
This is because when postback occurs in MVC then the empty page comes so you have to first save your data in TempData and use that TempData in another controller.
Tempdata is used to transfer data from one controller to another.
你可以使用TempData:这样的东西
controller1:
TempData [abc] =在这里写下你的留言;
controller2:
if(TempData [abc]!= null)
{
}
you can use TempData: Something like this
controller1:
TempData["abc"] = "write your message here";
controller2:
if(TempData["abc"] !=null)
{
}