我們平時使用asp.net mvc的時候,服務器端可以自動把請求的變量轉換成參數的變量。
如果要調用
AccountController 裏的
public ActionResult CheckLogin(string username, string pwd)
action,那我們只需要在jquery的ajax裏寫上
var param =
{};
param.username =
"hello";
param.pwd = "word";
$.post("Account", param);
但是,接下來就由問題來了,我們到底如何傳遞像Model 這樣的對象?
我們在開發asp.net mvc程序的時候,經常會編寫edit頁面和使用updateXXX的action,並通過傳遞model參數來進行數據更新。這時候我們就會想,能不能直接把view頁面修改後的model對象給傳遞回去Controller。答案是可以的,具體的做法是這樣……
首先,假設我們要調用的action是:
public ActionResult SaveAdd(Userinfo model)
然後,在view上寫javascript:
var param = {};
param["model.username"]="someone";
param["model.fullname"]="someone's fullname";
param["model.pwd"]="password";
$.post("SaveAdd", param);
這樣,我們就可以在服務器端自動把請求轉換成 Userinfo對象了,但是,我最初的時候發現參數怎麼傳都還是null……調試了一個下午,終於給我發現了問題的所在……
我定義了
Userinfo類的成員變量
public string username;
public string fullname;
public string pwd;
這樣是不行的……
最後,我把成員變量改成屬性:
public string username { get; set; }
public string fullname { get; set; }
public string pwd { get; set; }
參數的轉換就正常了!