2014-03-06 58 views
0

我試圖執行此代碼,除在Page_Load關於asp.net mvc的Page.Request?

protected void Page_Load(object sender, EventArgs e) 
{ 
    var contextToken = TokenHelper.GetContextTokenFromRequest(Page.Request); 

在控制器

var contextToken = TokenHelper.GetContextTokenFromRequest(Page.Request); 

但是我得到這個錯誤

錯誤1是所必需的對象引用非靜態字段,方法或屬性'System.Web.UI.Page.Request.get'

如何在MVC中獲取當前頁面請求?

更新1:

我改成:

var contextToken = TokenHelper.GetContextTokenFromRequest(HttpContext.Current.Request); 

現在,我得到:

錯誤2 'System.Web.HttpContextBase' 不包含 的定義,「當前'並沒有擴展方法'當前'接受類型'System.Web.HttpContextBase'的第一個參數 可以找到(你是否錯過了 使用指令或一個裝配參考?)

我需要什麼組件?

這些都是我usings

using Microsoft.SharePoint.Client; 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using System.Web.UI; 
+0

擺脫'.Current',只是用'TokenHelper.GetContextTokenFromRequest(HttpContext.Request)' –

+0

見我的代碼更新 –

回答

5

您不必在ASP.NET MVC一個Page,這是一個ASP.NET Web窗體概念(繼承自Page)。當您在MVC中工作時,您處於Controller類的範圍內,其中包含對當前Context的引用。

相反,MVC,用途:HttpContext.Request,這樣的:

var contextToken = TokenHelper.GetContextTokenFromRequest(HttpContext.Request); 
+1

要公平的說,MVC建立在ASP.NET之上,一個頁面更像是一個WebForms概念。 (請事實覈實) – gunr2171

+0

這是真的,這就是爲什麼你在MVC中有'HttpContext.Current.Request'。 –

+0

@ gunr217122:你是對的。現在稱爲ASP.NET Web窗體。 –