मुझे mvc में RedirectToAction विधि का उपयोग करने में कोई समस्या है। मेरा नक्शा मार्ग इस तरह दिखता है।RedirectToAction का उपयोग कैसे करें
routes.MapRoute(
"Project", // Route name
"{Controller}/{Action}/{projectId}/{machineName}/{companyId}",
new { controller = "Project", action = "Directives", projectId = 0, machineName = "", companyId = 0 } // Parameter defaults);
और वापसी इस तरह दिखेगा:
return RedirectToAction("Directives", "Project", new { projectId = projectId, machineName = project.MachineName, CompanyId = user.Company_Id });
यह प्रीफेक्ट काम करता है, लेकिन मैं RedirectToAction यह अभी भी इस
http://localhost:1843/Project/Directives?projectId=48&machineName=Netduino&companyId=27
नियंत्रक की तरह दिखता है का उपयोग करें:
[HttpPost]
[ValidateInput(false)]
public ActionResult Create(Project project, string text)
{
ViewBag.MachineType = new List<string>(new string[] { "Machine Type A", "Machine Type B", "Machine Type C", "Machine Type D", "Machine Type E" });
if (ModelState.IsValid)
{
UserAccess user = (UserAccess)(Session["UserAccessInfo"]);
Int64 projectId = DataBase.DBProject.InsertProject(project.ProjectNumber, project.MachineName, project.MachineNameEnglish, 1, project.Serial, text, user.Company_Id,project.MachineType);
return RedirectToAction ("Directives", "Project", new { projectId = 48, machineName = "Netduino", companyId = 27 });
// return RedirectToAction("Directives", "Project", new { projectId = projectId, machineName = project.MachineName, CompanyId = user.Company_Id });
}
else
{
ModelState.AddModelError("", "Invalid username or password");
}
return View();
}
प्राप्त करना नियंत्रक:
public ActionResult Directives(int projectId, string machineName, int companyId)
{
convertedDirectives = new List<Models.Directives>();
ViewBag.MachineName = machineName;
ViewBag.ProjectId = projectId;
List<object> Directives = new List<object>();
if (ModelState.IsValid)
{
Directives = DataBase.DBProject.GetDirectives(companyId);
foreach (List<object> dir in Directives)
{
Directives newDirective = new Models.Directives();
newDirective.CompanyID = Convert.ToInt32(dir[0]);
newDirective.DirectiveId = Convert.ToInt32(dir[1]);
newDirective.Id = Convert.ToInt32(dir[2]);
newDirective.DirectiveName = Convert.ToString(dir[3]);
newDirective.DirectiveNameShort = Convert.ToString(dir[4]);
newDirective.Created = Convert.ToDateTime(dir[5]);
convertedDirectives.Add(newDirective);
}
}
else
{
ModelState.AddModelError("", "An error has ");
}
ViewBag.DirectivesList = convertedDirectives;
return View();
}
लेकिन जिस तरह से मैं चाहता हूं कि यह ऐसा है।
http://localhost:1843/Project/Directives/48/Netduino/27
लेकिन अजीब बात यह है कि मैं कर सकता हूँ यूआरएल में मैनुअल प्रकार एक यह प्रीफेक्ट काम करता है। मैं गलत क्या कर रहा हूँ?
हैलो। किसी कारण से मैं अभी भी इसे सही तरीके से काम नहीं कर सकता। मैंने अपना कंट्रोलर जोड़ा है जो डेटा – mortenstarck
भेजता है, मुझे अभी इसे काम करने के लिए मिला है। समस्या कई जगह थी। 1. Global.asax.cs फ़ाइल में मुझे इस परियोजना "/ {action}/{machineName}/{projectId}/{directiveId}/{directiveName}" जैसी विशिष्टता की आवश्यकता है। और मैंने ToAction के बजाय RedirectToRoute का उपयोग करने के आपके सुझाव का उपयोग किया और फिर मैंने काम किया। – mortenstarck