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
我构建了一个 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