我在ASP.NET MVC中遇到麻煩,並將數據從View傳遞到Controller。我有這樣一個模型:ASP.NET MVC,將模型從視圖傳遞到控制器
public class InputModel {
public List<Process> axProc { get; set; }
public string ToJson() {
return new JavaScriptSerializer().Serialize(this);
}
}
public class Process {
public string name { get; set; }
public string value { get; set; }
}
我在控制器創建這個InputModel並將它傳遞給視圖:
public ActionResult Input() {
if (Session["InputModel"] == null)
Session["InputModel"] = loadInputModel();
return View(Session["InputModel"]);
}
在我Input.cshtml文件,然後我有一些代碼來生成輸入形式:
@model PROJ.Models.InputModel
@using(Html.BeginForm()) {
foreach(PROJ.Models.Process p in Model.axProc){
<input type="text" />
@* @Html.TextBoxFor(?? => p.value) *@
}
<input type="submit" value="SEND" />
}
現在,當我點擊提交按鈕時,我想處理放入文本框的數據。
問題1:我看過這個@ Html.TextBoxFor(),但我沒有真正得到這個「stuff => otherstuff」。我的結論是,「其他人」應該是我想要寫入數據的領域,在這種情況下,它可能是「p.value」。但是箭頭前面的「東西」是什麼?
早在控制器然後我有一些調試的自檢功能:
[HttpPost]
public ActionResult Input(InputModel m) {
DEBUG(m.ToJson());
DEBUG("COUNT: " + m.axProc.Count);
return View(m);
}
這裏的調試只能說明是這樣的:
{"axProc":[]}
COUNT: 0
,返回的模型我得到的是空的。
問題2:我對這個@using(Html.BeginForm())做了一些根本性的錯誤嗎?這在這裏不是正確的選擇嗎?如果是這樣,我怎麼讓我的模型充滿數據回控制器?
(我不能用「@model名單<過程>」在這裏(因爲上面的例子中的簡稱,在實際的代碼將有更多的東西)。)
我希望有人能填補我在與一些我忽略的細節。
您需要了解什麼是lambda表達式。 – SLaks
我現在做過。感謝您的名字。 – Cabadath