我已经奋斗了好几天了,没有任何成功。
父方法,返回一个视图:
public ActionResult ContactHome(int currentTab = 0)
{
IContactPage content = this.FauxBouchonContactPage();
Presentation.XXX.Logic.Models.CustomerCare.ContactHome model = new Presentation.XXX.Logic.Models.CustomerCare.ContactHome(content, currentTab);
return this.View(VIEW_CONTACT_HOME, model);
}
查看代码:
@switch (Model.CurrentTab) {
case (int)Common.XXX.Enums.ContactPageType.BlockType: @Html.Partial(Presentation.XXX.Logic.Controllers.CustomerCareController.VIEW_CONTACT_CHOSETYPE, new Presentation.XXX.Logic.Models.CustomerCare.ContactType()); break;
case (int)Common.XXX.Enums.ContactPageType.BlockComplaint: @Html.Partial(Presentation.XXX.Logic.Controllers.CustomerCareController.VIEW_CONTACT_RECLAIM, new Presentation.XXX.Logic.Models.CustomerCare.ContactReclaim()); break;
case (int)Common.XXX.Enums.ContactPageType.BlockQuestion: @Html.Action(Presentation.XXX.Logic.Controllers.CustomerCareController.ACTIONQUESTION, Presentation.XXX.Logic.Controllers.CustomerCareController.CONTROLLERNAME, new { isPost = false }); break;
// others case
当在显示视图之前需要执行某些操作时,我调用 Html.Action 而不是 Html.Partial,这里没有问题。
图案如下:
问题如下,当访问视图 contactType(按顺序排列的第一个部分视图)时,我得到以下 URL:
http://sample.com/fr/CustomerCare/ContactHome?currentTab=1
这就是我想要的,但是当访问问题或投诉时,网址是:
http://sample.com/CustomerCare/ChooseContactType
将此 URL 粘贴到新选项卡中时,我会收到 404 错误,因为没有为我的部分视图定义路由。
我想在 URL 中显示
http://sample.com/CustomerCare/ChooseContactType
,而不是 http://sample.com/fr/CustomerCare/ContactHome?currentTab=3
。
如何实现这一目标?或者修复我的 404 错误。如果需要,我可以粘贴更多代码。
对于遇到类似问题的任何人,我在这里找到了我的答案: 使用 RedirectToAction 时如何维护 ModelState 错误?
使用 RedirecToAction 获取正确的 Url 和 TempDate 来存储您的 modelState。