【问题标题】:Controller Doubled on URL (ASP MVC 2)控制器在 URL 上加倍(ASP MVC 2)
【发布时间】:2018-07-02 07:49:48
【问题描述】:

我在我的 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

但如果我尝试使用此 URL 模式调用 EditUser 函数

../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。在此先感谢

【问题讨论】:

  • 你想在这里做什么?您似乎正在动态地从 ViewData 设置表单目标操作和控制器,并且您没有为表单使用任何模型?

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


【解决方案1】:

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

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

否则会在运行时返回 Object。

【讨论】:

  • 哇,这是一个简单的修复,谢谢。我真的对此一无所知。仍在尝试了解 ASP MVC。谢谢你,先生,真的!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多