2012-07-16 204 views
0

好了,所以現在我的主控制器類我只是各有獨立的東西返回一個視圖,如:MVC3控制器和視圖

public ActionResult Contact() 
    { 
     return View(); 

    } 

我有這個拍下來,因爲它是不是很困難!但是我想知道的是,在這個行動結果中我還能做些什麼?還有什麼可以通過這個來完成的?

回答

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" }); 
} 

因此,大家可以看到有很多的事情可以做。問題是:你想做什麼?

+0

謝謝!超級有用。儘管如此,爲了回答這個問題,我不知道我想做什麼!我正在做一些最後的項目,以便我可以瞭解有關MVC3和相關事情的所有內容,並且我想要包含更多內容,而不僅僅是直觀的視圖。 – 2012-07-16 17:38:00

+0

你可以添加partialview嗎? JavaScript調用非常方便。 :) – Silvermind 2012-07-16 18:10:22

0

通常在Controller的Action中,您將從數據存儲中獲取數據並將其返回給視圖。如果你問的是什麼類型的ActionResults,你可以找到它們的列表here

相關問題