控制器在 URL 上加倍(ASP MVC 2)

Controller Doubled on URL (ASP MVC 2)

我的 FormUser 视图上有一个使用 Url.Action 的表单标签:

<form class="form-horizontal" action="..<%: Url.Action(ViewData("FormMode"), "Master") %>" method="post">
     {some form code}
</form>

ViewData("FormMode") 是在我的控制器上生成的,无论是编辑还是新建。这是我的主控制器代码:

Function FormAddUser() As ActionResult
        ViewData("AreaMenu") = sideBarModel.createLineMenu
        ViewData("RoleOption") = RoleOption()
        ViewData("FormMode") = "i_AddUser"
        Return View("Form_User")
    End Function

    Function EditUser() As ActionResult
        ViewData("AreaMenu") = sideBarModel.createLineMenu
        ViewData("ReadOnly") = "readonly"
        ViewData("FormMode") = "u_UpdateUser"
        ViewData("RoleOption") = RoleOption()

        Dim dt_user As DataTable = masterCommand.get_UserDetail(Request.QueryString("id"))

        For Each dr As DataRow In dt_user.Rows
            ViewData("v_UserName") = dr("User_Name")
            ViewData("v_Role") = dr("ID_Role")
        Next

        Return View("Form_User")
    End Function

如果我调用 FormAddUser 函数,提交按钮将具有正确的 URL 操作,即

../Master/i_AddUser

但如果我尝试调用 EditUser 函数,这是通过使用此 URL 模式

../Master/EditUser/?id=Alex

表单上的提交按钮将使Master翻倍

../Master/Master/u_UpdateUser

我尝试使用此

配置URL模式
routes.MapRoute( _
            "EditUser", _
            "{controller}/{action}/{*id}", _
            New With {.controller = "Master", .action = "EditUser", .id = UrlParameter.Optional}
        )

但它似乎不起作用。我能做什么?我正在使用 MVC 2。提前致谢

在调用 Url 帮助程序之前,您可能需要将 ViewData 转换为字符串。

Url.Action(ViewData("formmode").ToString(), "Master")

否则将在运行时 return 对象。