Контроллер удвоился по URL (ASP MVC 2) - PullRequest
0 голосов
/ 02 июля 2018

У меня есть тег формы с использованием Url.Action в представлении FormUser:

<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

Я пытался настроить шаблон URL с помощью этого

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

но, похоже, не работает. Что я могу сделать? Я использую MVC 2. Заранее спасибо

1 Ответ

0 голосов
/ 02 июля 2018

Вам, вероятно, нужно привести ViewData в качестве String перед вызовом помощника Url.

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

В противном случае возвращает объект во время выполнения.

...