sitefinity ControllerToolboxItem 与 MVC 控制器

sitefinity ControllerToolboxItem vs MVC Controller

我构建了一个 MVC 控制器,它将在整个站点中用于为 API 下载文件。我无法使用 Mvc\controllers\ControllerName\method 正常调用它。我收到 404 错误页面未找到。我确实通过添加 ControllerToolboxItem 并将其添加到页面来进行测试。一旦我将它添加到页面,我就可以调用该方法。使用 PageName\method?filePath="" 所以我知道该方法有效。我的 Controller 中是否缺少我需要添加的内容以便在整个站点中调用它?

public class CommonController : Controller
    {
        [HttpGet]
    public HttpResponseMessage GetDataFileResponse(string filePath) {
        try {
    
            FileStream fileStream = File.OpenRead(filePath);
            long fileLength = new FileInfo(filePath).Length;
    
            var response = new HttpResponseMessage();
            response.Content = new StreamContent(fileStream);
            response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
            response.Content.Headers.ContentDisposition.FileName = "mydata.csv";
            response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
            response.Content.Headers.ContentLength = fileLength;
            return response;
        } catch (Exception e) {
            Console.WriteLine(e);
            throw;
        }
    }
}

您可以将小部件添加到基本页面模板,因此现在它在所有页面上都可用。

或者看看你能不能把它变成一个网络 api 控制器然后就没有小部件了,但是你可以通过 /yourapiroute/common/getdataFileResponse?filepath=xxx

我以前写过一篇文章,可能会有帮助:https://sitefinitydevelopment.com/blog/uploading-files-to-sitefinity-asynchronously-using-kendo-ui-upload.html