在我的AJAX调用中,我想将一个字符串值返回给调用页面.
我应该使用ActionResult
还是只返回一个字符串?
作为ASP.NET MVC的新手,我一直想知道Controller方法的签名.在我看过的所有示例中,它们似乎总是返回ActionResult,即使它们实际返回ViewResult实例或类似实例.
这是一个常见的例子:
public ActionResult Index()
{
return this.View();
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,将方法声明为public ViewResult Index()
并获得更强的类型支持是不是更有意义?
实验表明这是有效的,所以似乎有可能.
我确实意识到可能存在需要多态的情况(例如,如果你只想在某些情况下重定向,但在其他情况下显示视图),但如果方法总是返回一个视图,我会发现更多的ViewResult可取的.
就未来的兼容性而言,ActionResult显然提供了更强大的签名,但如果有人控制整个代码库,则总是可以将方法的签名更改为更通用的返回类型(如果将来需要它).
是否有其他我不了解的注意事项,或者我应该继续并使用特定的返回类型声明我的控制器方法?
我能够将JSON和部分视图(html)作为有效的ActionResult返回,但是如何返回XML字符串?
我在ASP.Net MVC中创建一个ActionResult来提供图像.启用会话状态后,IIS将一次只处理来自同一用户的一个请求.(这不仅适用于MVC.)
因此,在具有多个图像回调此Action的页面上,一次只能处理一个图像请求.这是同步的.
我希望这个图像Action是异步的 - 我希望每次执行多个图像请求而不需要前一个完成.(如果图像只是静态文件,IIS会以这种方式为它们提供服务.)
所以,我想禁用Session仅用于对该Action的调用,或者指定某些请求没有Session状态.任何人都知道如何在MVC中完成这项工作?谢谢!
我有一个专门的案例,我希望从Controller Action提供一个直接的html文件.
我想从Views文件夹以外的其他文件夹中提供它.该文件位于
Solution\Html\index.htm
Run Code Online (Sandbox Code Playgroud)
我想从标准的控制器动作中提供服务.我可以使用返回文件吗?我该怎么做?
MVC App,客户端向服务器发出请求,发生错误,要将msg发送回客户端.尝试了HttpStatusCodeResult,但只返回404没有消息,我需要将错误的详细信息发送回客户端.
public ActionResult GetPLUAndDeptInfo(string authCode)
{
try
{
//code everything works fine
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
return new HttpStatusCodeResult(404, "Error in cloud - GetPLUInfo" + ex.Message);
}
}
Run Code Online (Sandbox Code Playgroud) 当我需要返回错误的请求结果时,我可能会遇到情况.
例如,调用MVC 3站点的控制器操作,但请求uri中缺少必需的参数.
我回复了什么?我知道我可以这样做:
Response.StatusCode = (int)HttpStatusCode.BadRequest;
return Content(string.Empty);
Run Code Online (Sandbox Code Playgroud)
这是上述情况的正确方法吗?
我需要在ASP.NET MVC应用程序中创建一个具有.csv文件类型的ActionResult.
我将向我的营销合作伙伴提供"不要打电话"的电子邮件列表,我希望它在文件类型中具有.csv扩展名.然后它将自动在Excel中打开.
http://www.example.com/mailinglist/donotemaillist.csv?password=12334
Run Code Online (Sandbox Code Playgroud)
我已成功完成以下操作,但我想确保这是绝对最佳和推荐的方法.
[ActionName("DoNotEmailList.csv")]
public ContentResult DoNotEmailList(string username, string password)
{
return new ContentResult()
{
Content = Emails.Aggregate((a,b)=>a+Environment.NewLine + b),
ContentType = "text/csv"
};
}
Run Code Online (Sandbox Code Playgroud)
这个Actionmethod会响应上面的链接就好了.
我只是想知道是否有任何意外冲突的任何不同版本的IIS,任何类型的ISAPI过滤器,或任何我现在无法想到的文件扩展名.
我需要100%肯定,因为我会向外部合作伙伴提供这个,并且不想在以后改变主意.我真的看不出任何问题,但也许有些东西模糊不清 - 或者更像"MVC"这样做的方式.
到目前为止,在ASP.NET MVC中返回ActionResult的所有方法是什么(即RedirectToAction等)
我还没有找到一个很好的文档资源来列出这种东西.
以下两个控制器ActionResult返回语句之间有什么区别:
return new RedirectResult("http://www.google.com", false);
Run Code Online (Sandbox Code Playgroud)
和
return Redirect("http://www.google.com");
Run Code Online (Sandbox Code Playgroud) actionresult ×10
asp.net-mvc ×10
asp.net ×2
.net ×1
ajax ×1
asynchronous ×1
bad-request ×1
c# ×1
html ×1
polymorphism ×1
redirect ×1
viewresult ×1
xml ×1