0

我试图在某个操作后创建一个 Url,这个 url 应该指向不同的控制器和操作。我还需要包含一些参数,以便它们为目标控制器提供所需的信息。所以可以说我有一个控制器叫做:

DoWorkController.cs

和一个动作

public void Add(params...){..}

我在我的主页控制器中使用 UriBuilder,如下所示:

UriBuilder builder = new UriBuilder();
builder.Host = System.Web.HttpContext.Current.Request.Url.Host;
builder.Port = System.Web.HttpContext.Current.Request.Url.Port;
//got stuck here        
Uri ret = builder.Uri;
return ret;

我希望它提取控制器名称和操作名称并将其分配给构建器,然后添加参数,我不知道该怎么做。建议??

编辑

我解决了从控制器到操作的路径问题,我仍然坚持向 url 添加参数。

UriBuilder builder = new UriBuilder();
builder.Host = System.Web.HttpContext.Current.Request.Url.Host;
builder.Port = System.Web.HttpContext.Current.Request.Url.Port;
string path;
if (operation == 1)
    path = Url.Action("Add", "DoWork");
else if(operation ==2)
    path = Url.Action("Delete", "DoWork");
else
    throw new ArgumentException("Operation is neither Add or Delete");
if (path != null)
{
    builder.Path = path;
}
Uri ret = builder.Uri;
4

2 回答 2

1

您可以通过以下方式将参数添加到 Url.Action:

Url.Action("GetByList", "Listing", new { name = "John"})
于 2013-08-08T16:00:45.800 回答
0

如果您在主页控制器上,那么您已经知道控制器名称,不是吗?

但是要回答您的问题,获取控制器和操作名称的方法是从以下位置获取它routeData

RouteData rd = ViewContext.RouteData;
var controllerName = rd.GetRequiredString("controller");
var actionName = rd.GetRequiredString("action");
于 2013-08-08T15:42:13.703 回答