asp.net-mvc-3 – 如何正确使用RedirectToAction
发布时间:2020-05-24 14:54:29 所属栏目:asp.Net 来源:互联网
导读:我在mvc中使用RedirectToAction方法时遇到问题.我的地图路线看起来像这样. routes.MapRoute( Project, // Route name {Controller}/{Action}/{projectId}/{machineName}/{companyId}, new { controller =
|
我在mvc中使用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",new { projectId = 48,machineName = "Netduino",companyId = 27 });
// return RedirectToAction("Directives",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 但奇怪的是,我可以手动输入Url并且它可以完美运行.我做错了什么? 解决方法我有一些提示.首先,不要命名您的路线.将null传递给第一个参数.有几个RedirectToRoute重载采用路由名称,RedirectToAction返回RedirectToRouteResult. 其次,不要给出所需参数的默认值.如果要使用默认值,请仅将默认值设置为最后一个参数. routes.MapRoute(null,// don't name the route
"{controller}/{action}/{projectId}/{machineName}/{companyId}",new
{
controller = "Project",//projectId = 0,//machineName = "",//companyId = 0,}
);
第三,如有疑问,请尝试返回RedirectToRoute.传递控制器,动作和区域(如果适用)以及其他参数: return RedirectToRoute(new
{
controller = "Project",// area = "SomeAreaName",// if the action is in an area
projectId = projectId,companyId = user.Company_Id,});
最后一个提示是使用T4MVC摆脱那些神奇的字符串. routes.MapRoute(null,new
{
controller = MVC.Project.Name,action = MVC.Project.ActionNames.Directives,}
);
您可以在RedirectToRoute中使用相同的强类型,也可以使用T4MVC部分返回操作: return RedirectToAction(MVC.Project.Directives
(projectId,user.Company_Id)); (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 如何在asp.net mvc 2中获取Html.EditorForModel()方法的tex
- asp.net-mvc – 在html.actionlink上单击转到上一页
- ASP.NET / MVC 4在64位IIS 7.5服务器上捆绑和缩小404问题
- asp.net-mvc – DropDown列表onchange事件和MVC中的AJAX
- asp.net-mvc – 属性路由和本地化问题
- asp.net-mvc-3 – 哪里和如何定义我的asp.net MVC 3 web应用
- asp.net-mvc – 适当地url编码空间字符
- asp.net-mvc – 应该在ASP.NET MVC应用程序中缓存发生在哪里
- asp.net-mvc – Asp.net Identity:User.Identity.GetUserI
- 如何在asp.net转发器控件中获取项目点击事件?
推荐文章
站长推荐
- asp.net-mvc-2 – 为什么我们在ASP.NET MVC中使用
- 看起来像asp.net mvc中的日期工具不正确
- .net – 如何在请求标头上调用需要承载令牌的NSw
- asp.net – 如何处理从“DBNull”类型到“String
- asp.net – Web API服务 – 如何在异步任务中使用
- asp.net-mvc – asp.mvc中渲染的区别是什么
- ASP.NET MVC3 AJAX.BeginForm AjaxOptions OnSuc
- asp.net-mvc – 带MVC结果的Response.Flush无效
- SimpleMembership与ASP.NET MVC 4中的自定义数据
- asp.net-mvc-3 – 具有多个强类型部分视图的MVC
热点阅读
