我正在尝试将数据传递到其他路线。我使用表单操作和Url.Action
,但这不起作用。它甚至没有路由到另一个视图。当我将锚标记href与Url.Action
一起使用时,它可以工作,但是如何将数据从一个Controller方法传递到同一个Controller但是使用不同的方法。
答案 0 :(得分:0)
我在Github上有一个DNN MVC模块示例供您参考。 https://github.com/DotNetNuclear/DnnRestaurantMenu/blob/master/RestaurantMenu.MVC。您可以通过在Releases链接下找到安装包来轻松安装它。
如果查看默认/索引视图,则会打开一个链接以打开“编辑”视图。如果传递了项目ID,它会将数据加载到编辑表单中,否则,如果没有项目ID,则会将其视为新的(添加)项目。
所以在我的View.cshtml中,我使用DNN的Url.Action助手来形成按钮的href。 (https://github.com/DotNetNuclear/DnnRestaurantMenu/blob/master/RestaurantMenu.MVC/Views/Menu/Index.cshtml)
<a class="btn btn-default" href="@Url.Action("Edit", "Menu", new {ctl = "Edit", itemId = item.MenuItemId})">@Dnn.LocalizeString("EditItem")</a>
第一个参数是模块控制键/动作。第二个是控制器名称。在Url.Action的第3个参数中,我们传递控件类型,然后传递任意数量的其他查询字符串参数。在这种情况下,视图模型中的项目ID。
在我的MenuController的Edit()动作中,我可以使用该项ID参数从数据库中查找项目模型,然后返回编辑视图。
public ActionResult Edit(int itemId = -1)
{
...
if (itemId > 0)
{
item = _menuController.GetItem(itemId, CurrentModuleId);
}
...
}
答案 1 :(得分:0)
我无所不能的唯一方法就是创建一个routerconfig.cs:
$.ajax({
url: `/DesktopModules/MVC/CW.GridTest/IMMUser/EditUserById/userid/${myUserId}`,
method: "Post",
headers: {
"ModuleId": moduleId,
"TabId": tabId,
"RequestVerificationToken": rvtoken,
"userId": id //if we were to specify Edit as our url, then we would need this since Edit() takes no parameters and instead, looks in the header for it's data.
}
然后,例如,在我的index.cshtml中,可以这样做:
/DesktopModules/MVC/CW.GridTest/IMMUser/EditUserById/${myUserId}
或
/DesktopModules/MVC/CW.GridTest/IMMUser/AssignItemToUser/userid/${myUserId}/itemid/${myItemId}
或
ASP.NET