gpt4 book ai didi

asp.net-mvc-4 - 在 SignalR Hub 中生成路由 URL

转载 作者:行者123 更新时间:2023-12-04 09:43:51 25 4
gpt4 key购买 nike

我想从我的 SignalR Hub 中生成一个路由 URL。

在 Controller 中,我会执行以下操作:

var u = new UrlHelper(this.ControllerContext.RequestContext);
string url = u.Action("Index", "Transfer", new { id = 27 });

或者:
var route = RedirectToAction("Index", "Transfer", new { id = 27 });
string url = Url.RouteUrl(route.RouteName, route.RouteValues)

但是这两种方法在中心内似乎都不相关。有没有一种机制可以用来构造 URL?

最佳答案

正如大卫在他的评论中指出的那样,我以同样的方式取得了结果。

我的 MVC View 有一个属性:

public string ReportDownloadUrl { get; set; }

hub 方法只返回要下载的文件的 Uid:
public ActionResult GetReport<T>(ReportModel pageModel)
{
//generate the report and save to an internal server store
var fileKey = GenerateReport(...);
//return the unique file id
return new JsonResult {Data = fileKey, JsonRequestBehavior = JsonRequestBehavior.AllowGet};
}

客户端脚本调用集线器方法并通过 Url 下载文件:
hubMethod(model, fileExtension)
.done(function (ret) {
if (ret.Data) {
var url = downloadUrl + "/" + ret.Data;
DownloadURL(url);
}
})

function DownloadURL(url) {
var iframe = document.getElementById("hiddenDownloader");

if (iframe === null) {
iframe = document.createElement('iframe');
iframe.id = "hiddenDownloader";
iframe.style.visibility = 'hidden';
document.body.appendChild(iframe);
}

iframe.src = url;
}

实际文件下载的 Controller Action :
public ActionResult DownloadFile(string id)
{
//3 first characters of id are file extension in my case
var format = id.Substring(0, 3);
var fileFormat = (FileFormat)Enum.Parse(typeof(FileFormat), format, true);
var file = (KeyValuePair<string, byte[]>)DataStore[id];


return File(file.Value, fileFormat.ToDescription(), file.Key);
}

希望它可以节省某人的时间。

关于asp.net-mvc-4 - 在 SignalR Hub 中生成路由 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20514469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com