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

时间:2018-07-02 07:49:48

标签: asp.net-mvc vb.net asp.net-mvc-routing

我在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 / u_UpdateUser

我尝试使用此配置网址格式

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

但是它似乎不起作用。我能做什么?我正在使用MVC2。在此先感谢

1 个答案:

答案 0 :(得分:1)

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

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

否则将在运行时返回Object。