MVC前台向後台傳參和不同頁面傳

2022-09-10 17:36:20 字數 3230 閱讀 5384

前台向後台傳引數其實就是通過檢視訪問或重新整理本頁面時通過位址列傳引數給該頁面或其它頁面的控制器。

通過提交表單來實現傳值,也可以在指定表單屬性action來指定傳到哪個控制器中,對應控制器使用request來接收即可,不指定即預設傳給自己的控制器。

在頁面中home的index頁面中寫表單輸入內容並提交到自己的控制器

可以看到點選提交的時候位址列上有你傳的變數名及值,如圖:

你也可以不在文字框中輸入,直接在位址列輸入文字框的name=要傳的值,輸了之後回車,這樣和在文字框中輸入再提交是乙個效果。

後台接收

在指定的控制器根據位址列上傳過來的name名接收

//獲取傳過來的值

string name = request["username"];

位址列傳值就直接在位址列輸入引數即可。注意變數名要和你控制器裡接收的變數名一致。

路由傳值也是通過位址列完成的,只是它可以自己配置,傳的時候滿足配置格式位址列就不會出現變數名,而是只有值,配置路由時controller和action和值之間用/隔開即可。

比如配置的路由格式如下:

url: "///",//順序可以亂寫,但是還是尊重規則:比如"///"

defaults: new

在訪問或傳值的時候就要在位址列上按照你寫的規則來,不然找不到頁面

路由傳值不是通過?傳參的,如圖:

在控制器接收路由傳的值時,引數得按照你配置得格式來寫,比如:配了兩個引數,你控制器就至少有兩個引數,當然,如果要多傳引數,只能在後面寫問號來傳,因為你路由配置裡就是兩個引數,用/多傳的話就會報404錯。

多傳引數使用?問號

控制器也是能接收的

如果你控制器裡需要乙個int型別的引數,最好在型別後面加個問號,表示可以為空,不然沒有傳引數會報錯。下面就沒加

在訪問時不傳任何引數時,錯誤如下圖:

tempdata:只能使用一次

①宣告乙個tempdata,另乙個控制器接收

public actionresult index()

控制器呼叫

public actionresult about()

②傳乙個匿名物件
//2給另乙個頁面傳引數傳匿名物件(路由傳參),使用這種穿法對應的控制器就要在建構函式的引數裡使用物件的屬性的個數的引數來接收,名字也要一一對應

//about控制器的引數格式為:about(string id, string username,int age)

return redirecttoaction("about", new );

或者

return redirecttoaction("index", "login", new

);

另乙個控制器裡接收

因為傳的是物件,所有接收時引數必須和傳過來的物件的屬性一致

public actionresult about(int? id, string username, string address)

這樣傳的時候滿足了路由配置中的兩個條件,所以兩個引數會沒有變數名,而且用的是/隔開,而最後乙個就不滿足路由配置,就用問號傳,而且變數名也有。如果這個匿名物件少乙個屬性則能滿足,如圖:

③傳乙個指定物件

public class userinfo

public int age

public string address

}//about控制器的引數格式為:about(userinfo user)

//這樣穿的話位址列最後會變成http://localhost:54575/home/about?name=黃某&age=35&address=三國,因為它不滿足配的路由的格式,所以會把變數名寫出來

return redirecttoaction("about", new userinfo() );

控制器接收

public actionresult about(userinfo user)//引數型別和傳的一致

這樣沒有一點滿足配置的路由,所以位址列傳參格式如下:

比如:接收到的值為:封裝為匿名物件傳過去

public actionresult index(int? id, string username, string address)

); }

//這個控制器用對應的引數接收即可

public actionresult about(int? id, string username, string address)

在沒有過期的時候可以一直使用

template只能使用一次,臨時變數,基於session實現。一次請求會銷毀。只能使用一次,重新整理了就沒有了,也就是第一次請求中可以無限使用,之後就被銷毀了,下次的請求也就沒了,也就是重新整理了就沒了

比如:在這個控制器裡建乙個tempdata,然後跳轉到about控制器

public actionresult index()

about控制器

public actionresult about()

傳遞實體物件

傳遞匿名物件(臨時使用)

前台向後台傳值

提交方式為get方式時,在你想要傳值的目的url後面,用?連線引數,若有多個引數,各引數間用 連線。優點 傳遞少數引數時簡單明瞭,操作方便 缺點 傳遞的引數會被暴露在外,不利於資訊保密,且傳遞引數數量有限,不適合多資料傳送。通過頁面的form表單向後台傳參,action中寫後台介面,表單提交方式必須...

Struts中從前台向後台action傳陣列的方法

有的時候,經常需要從前台表單向後台傳輸乙個陣列或者list,但是經過試驗發現後台用list的set方法並不能很好的接收,如下面這個例子 confirm button click function if selecteduseids.length 0 else selecteduserids是我們自己...

關於html向後台傳參中文亂碼

1 html向後台傳參中文亂碼問題的解決辦法 在我們通過ajax或者url直接向後台傳參出現引數被轉義成亂碼時,後台解決辦法如下示例 通過後台識別當前瀏覽器,對引數進行編碼轉義 string agent request.getheader user agent if filename.equals ...