0

さて、今私のメインコントローラークラスでは、それぞれ別々のものに次のようなビューを返すようにしています。

    public ActionResult Contact()
    {
        return View();

    }

それほど難しくないので、私はこのダウンパットを持っています!私が知りたいのは、このアクション結果で他に何ができるかということです。これによって他にどのようなことが達成できますか?

4

2 に答える 2

3

ビューの代わりにハードコードされたコンテンツを返すことができます。

public ActionResult Contact()
{
    return Content("Hello");
}

JSONを返すことができます:

public ActionResult Contact()
{
    return Json(new { Foo = "bar" }, JsonRequestBehavior.AllowGet);
}

javascriptを返すことができます:

public ActionResult Contact()
{
    return JavaScript("alert('Hello World');");
}

ファイルを直接ストリーミングできます。

public ActionResult Contact()
{
    return File(@"c:\work\foo.pdf", "application/pdf", "foo.pdf");
}

404を返すことができます:

public ActionResult Contact()
{
    return HttpNotFound();
}

あなたは401を返すことができます:

public ActionResult Contact()
{
    return new HttpUnauthorizedResult();
}

また、組み込みのアクション結果がニーズに合わない場合は、いつでもカスタムの結果を作成できます。たとえば、XMLを返すもの:

public class XmlResult : ActionResult
{
    private readonly object _data;
    public XmlResult(object data)
    {
        if (_data == null)
        {
            throw new ArgumentNullException("data");
        }
        _data = data;
    }

    public override void ExecuteResult(ControllerContext context)
    {
        var response = context.HttpContext.Response;
        response.ContentType = "text/xml";
        var serializer = new XmlSerializer(_data.GetType());
        serializer.Serialize(response.OutputStream, _data);
    }
}

その後:

public ActionResult Contact()
{
    return new XmlResult(new { Foo = "Bar" });
}

ご覧のとおり、できることはたくさんあります。問題は、何をしたいのかということです。

于 2012-07-16T17:19:42.257 に答える
0

通常、コントローラーのアクション内では、データ ストアからデータを取得し、それをビューに返します。どの種類の ActionResults があるかを知りたい場合は、ここでそれらのリストを見つけることができます。

于 2012-07-16T17:20:48.470 に答える