标签: actionresult

适用于大型视频文件的MVC ActionResult

我正在使用ASP.NET MVC 4作为网站.该网站管理我们小组的在线活动,并为注册用户提供在线资料,网络活动档案和教学视频的访问权限.我已经建立了一个上传和管理视频的系统,现在我需要构建Controller Actions来将视频文件发送到网页.我们正在使用VideoJS作为观众,我现在非常满意.我们需要保持文件的安全性,以便让文件位于Web服务器上的某个位置似乎对我们不起作用.

我的主要问题是将文件返回给查看器的好方法是什么?我习惯使用ActionResult和JSONResult类,但它们似乎不适合视频文件.文件可能非常大,有时甚至高达GB或更高.我看到了MVC FileResult类,FileStreamResult类和FileContentResult类.在构建时,我应该使用哪一个以及我应该考虑哪些其他考虑因素?

我感谢您的帮助.

道格

asp.net-mvc actionresult video-streaming

5
推荐指数
1
解决办法
1304
查看次数

如何处理.ajax post中的FileStream返回类型?

我通过以下代码发送JSON对象.控制器返回CSV格式的值,应提供promt打开或保存为CSV文件.我无法理解应该在什么代码中成功编写代码:function(result)

出口链接

Html.ActionLink("Export", "", "", null, new { @onclick = "return exportData();"})

function exportData() {

var searchViewModel = getExLogSearchModelData();
var path = getAbsolutePath("ExclusionLog", "ExportData");
$.ajax({
    url: path,
    cache: false,
    contentType: 'application/json; charset=utf-8',
    dataType: 'html',
    type: 'POST',
    data: JSON.stringify(searchViewModel),
    success: function (result) {
    },
    error: function (error) {
        $("#voidcontainer").html("Error");
    }
});
Run Code Online (Sandbox Code Playgroud)

}

控制器ActionResult

    public ActionResult ExportData(ExclusionLogSearchViewModel postSearchViewModel)
    {
        try
        {
            IEnumerable<ExclusionLogViewModel> exclusionLogData = null;
            exclusionLogcData = this._workerService.GetExclusionLogData(postSearchViewModel);

            return CSVFile(exclusionLogMembershipSyncData.GetStream<ExclusionLogViewModel>(), "ExclusionLogTables.Csv");
        }
        catch (Exception ex)
        {
                throw ex;
        }
        return null; …
Run Code Online (Sandbox Code Playgroud)

ajax asp.net-mvc actionlink actionresult

5
推荐指数
1
解决办法
4776
查看次数

如何优化此操作以获得更好的性能?我需要把一个计时器放在什么时候从网址等"获取"XML数据

我有一个我觉得非常沉重的动作结果,所以我想知道如何优化它以便它获得更好的性能.此Web应用程序将同时由+ 100,000个用户使用.

现在我的Actionresult做了以下事情:

  • 从Internet URL检索XML文件
  • 将xml数据填充到我的数据库
  • 数据库数据填充了我的Viewmodel
  • 将模型返回到视图

每次用户访问视图时,此4个函数都会触发.这就是为什么我认为这个Actionresult非常糟糕.

如何将以下内容添加到我的Actionresults中?

添加计时器来检索XML文件并将xml数据填充到DB,就像每10分钟一样,因此每次用户访问视图时都不会触发.每次用户访问站点时,唯一需要触发的功能是viewmodel绑定并返回模型.我怎么能做到这一点?

注意:

  • xml文件每10分钟左右更新一次新数据.
  • 我有大约50个动作结果,它们执行相同的获取xml数据并添加到数据库但有50个不同的xml文件.
  • 如果xml URL处于脱机状态,则应跳过整个xml检索和数据库添加,然后执行模型绑定

这是我的行动结果:

public ActionResult Index()
        {
            //Get data from xml url (This is the code that shuld not run everytime a user visits the view)
            var url = "http://www.interneturl.com/file.xml";
            XNamespace dcM = "http://search.yahoo.com/mrss/";
            var xdoc = XDocument.Load(url);
            var items = xdoc.Descendants("item")
            .Select(item => new
            {
                Title = item.Element("title").Value,
                Description = item.Element("description").Value,
                Link = item.Element("link").Value,
                PubDate = item.Element("pubDate").Value, 
                MyImage = (string)item.Elements(dcM + "thumbnail")
               .Where(i => i.Attribute("width").Value …
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc performance actionresult

5
推荐指数
1
解决办法
1092
查看次数

使用Ajax.BeginForm从MVC Action返回int

什么是从Ajax MVC Action调用返回int的最简单方法?

我目前正在尝试:

public ContentResult Create(MyModel model)
{
    return Content("1");
}

using (Ajax.BeginForm("Create",
        new AjaxOptions {
            OnComplete = "function(data) { alert(data); }"
        }))
Run Code Online (Sandbox Code Playgroud)

我得到警报[object Object].我如何获得int值?或者如果可能的话直接返回int而不必使用ContentResult?

ajax actionresult ajax.beginform asp.net-mvc-2

4
推荐指数
1
解决办法
3582
查看次数

从另一个ActionResult返回ActionResult

说我有以下代码,在记事本中嘲笑,所以原谅任何小错误:)

//Default page
public ActionResult Index()
    {
        var musicViewModel
        {
         Albums = GetTopSellingAlbums(5),
         Genres = GetTopGenres(5),
         Artists = GetTopArtists(5)
         };

        return View(musicViewModel);
    }

[HttpPost]
public ActionResult Index(MusicViewModel musicViewModel)
    {

        //For the example, pretend I have a class called musicStoreSubmission in my
        //viewmodel which holds a few different fields the user fills out.

        if(ModelState.IsValid)
        {
            //Do some actions based on the user submitting a form
        }

        //Else, refresh page with errors in Modelstate.
        var musicViewModel
        {
         Albums = GetTopSellingAlbums(5),
         Genres = …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc controllers actionresult

4
推荐指数
1
解决办法
1万
查看次数

在Struts 2中使用ActionForward和动态参数

将应用程序从Struts 1迁移到Struts 2时

在某些地方,根据请求参数,相同的动作类已用于不同类型的视图.

例如:如果createType1表示需要附加一个参数,或者createType2表示需要追加一些额外的参数,就像我需要将动态参数传递给其他一些动作一样ActionForward.

struts-config.xml中

<action path="/CommonAction" type="com.example.CommonAction" scope="request">
    <forward name="viewAction" path = "/ViewAction.do"/>
</action>
Run Code Online (Sandbox Code Playgroud)

行动类

public class CreateAction extends Action
{
    public ActionForward execute(ActionMapping m, ActionForm f, HttpServletRequest req, HttpServletResponse res) throws ServletException, Exception
    {
            String actionPath = m.findForward("viewAction").getPath();
            String createType = req.getParameter("createType");
            String params = "&action=view";
            if("1".equals(createType)){
               params = params + "&from=list";
            }else if("2".equals(createType)){
               params = params + "&from=detail&someParam=someValue";
            }//,etc..
            String actionUrl = actionPath+"?"+params;
            return new ActionForward(actionUrl);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我无法在Struts 2中做同样的事情.在Struts …

java struts struts2 actionresult

4
推荐指数
1
解决办法
1万
查看次数

在ExecuteResult Asp.Net MVC Core中访问TempData

我想保存通知TempData并显示给用户。我为此创建了扩展方法,并实现了一个从扩展的类ActionResult。我需要访问TempDataoverride ExecuteResultActionContext

扩展方式:

 public static IActionResult WithSuccess(this ActionResult result, string message)
 {
    return new AlertDecoratorResult(result, "alert-success", message);
 }
Run Code Online (Sandbox Code Playgroud)

扩展ActionResult类。

public class AlertDecoratorResult : ActionResult
{
        public ActionResult InnerResult { get; set; }
        public string AlertClass { get; set; }
        public string Message { get; set; }
    public AlertDecoratorResult(ActionResult innerResult, string alertClass, string message)
    {
        InnerResult = innerResult;
        AlertClass = alertClass;
        Message = message;
    }

     public override void ExecuteResult(ActionContext context)
    { …
Run Code Online (Sandbox Code Playgroud)

actionresult asp.net-core-mvc

4
推荐指数
2
解决办法
1520
查看次数

如何在 MVC 控制器外部返回 StatusCode 对象

我正在将 MVC 控制器重构为不同类中的更小的部分,并且已经到了返回“return StatusCode(500,"Some message")”项的部分。

据我所知,似乎我无法在控制器之外执行此操作。

这是可能的,还是我必须找到一种替代方法来返回响应,并将其转换为调用代码(MVC 控制器)中的适当类型?

我可以看到自己遇到的一个问题是,MVC 操作的原始类型是 IActionResult,因此在操作中我一直返回适当的响应,有时是 view(,model),有时是 Json(),有时是 StatusCode (<500>,),即我的回答不一致。

有没有一种自然的方法让我可以拾取这些代码并将其移动到另一个类中以使其工作,或者我是否必须手工制作自己的对象来表示我本来会在控制器中返回的内容,如果是这样,什么是受到推崇的?

简而言之,理想情况下,我希望能够在控制器外部的类中返回操作结果,例如“return View(”my view name”, myModel)。我怎样才能实现这一点?

感觉很脏,但也许是一个包含状态代码、消息、对象(用作模型)、视图名称和一个名为 ActionResultType 的新枚举的单个对象,其值为“StatusCode”、“Json”和“View”,因此,当控制器收到响应时,我可以相当轻松地将其映射回适当的自然状态。

也许我走得太远了,应该只专注于从控制器中获取逻辑的主要部分,而不是尝试在其他地方构建更充实的响应?

如果可能的话,我希望每个操作结果都达到大约 10 行,但除非我能找到一种好方法从其他地方返回适当的响应,否则这可能会很困难。

c# asp.net asp.net-mvc actionresult asp.net-core

4
推荐指数
1
解决办法
5158
查看次数

为什么ASP.NET MVC中的ContentResult控制器在指定UTF-8时返回UTF-16?

我有一个ActionResult,它返回嵌入式设备的XML.相关代码是:

return Content(someString, "text/xml", Encoding.UTF8);
Run Code Online (Sandbox Code Playgroud)

即使指定了UTF-8,生成的XML也是:

<?xml version="1.0" encoding="utf-16"?>
Run Code Online (Sandbox Code Playgroud)

ASP.NET MVC编译为AnyCPU并在Windows 2008服务器上运行.

为什么不返回UTF-8编码的XML?

asp.net-mvc utf-8 utf-16 actionresult

3
推荐指数
1
解决办法
4462
查看次数

在C#MVC中,您可以设置一个全局行为,每个动作方法必须在处理其余请求之前执行该行为吗?

我有一个相当大的MVC Web应用程序,我在每个控制器中重复一个操作,看看客户是否已经完成了应用程序进程(在这种情况下,我检查了他们的配置文件中的标志).理想情况下,我想从每个操作方法中删除此代码,并将其应用于返回操作结果的所有操作方法.

.net c# asp.net-mvc dry actionresult

3
推荐指数
1
解决办法
348
查看次数