我在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。在此先感谢
答案 0 :(得分:1)
在调用Url帮助程序之前,您可能需要将ViewData
转换为String。
Url.Action(ViewData("formmode").ToString(), "Master")
否则将在运行时返回Object。