所以正確的是,我想用Html.ActionLink調用一個控制器方法,就像我在其他ocasions中所做的一樣,只有這一次,我給它一個本身包含另一個對象和一個字符串的對象。但該對象始終爲空。我保持登錄ViewBag(它在那裏,我檢查)。使用Html.ActionLink與複雜的對象(包含與其他對象)
的類:
public class Login
{
[Required(ErrorMessage = "Username is required")] // make the field required
[Display(Name = "Username")] // Set the display name of the field
public string Username{ get; set; }
[Required(ErrorMessage = "Password is required")]
[Display(Name = "Password")]
public string Password{ get; set; }
[Required(ErrorMessage = "Company is required")]
[Display(Name = "Company")]
public string Company{ get; set; }
}
public class Filter
{
public Login loginInfo;
public string idDocument;
}
的Html.ActionLink調用:
@Html.ActionLink("Details", "DetailOrder", "Home", new {loginInfo = new { Company = ViewBag.loginInfo.Company, Username = ViewBag.loginInfo.Username, Password = ViewBag.loginInfo.Password }, idDocument = @Html.DisplayFor(modelItem => item.NumDoc) }, htmlAttributes:null)
控制器方法
public ViewResult DetailOrder(Filter afilter)
{
...
return View(ans);
}
在這一點上,我已經嘗試了一些東西,動作鏈接,通過給對象:
2-new { loginInfo=ViewBag.loginInfo, idDocument= @Html.DisplayFor(modelItem => item.NumDoc)}
3-new { Username=ViewBag.loginInfo.Username, Password=ViewBag.loginInfo.Password, Company=ViewBag.loginInfo.Company, idDocument= @Html.DisplayFor(modelItem => item.NumDoc)}
4-new { afilter = new {loginInfo=ViewBag.loginInfo, idDocument= @Html.DisplayFor(modelItem => item.NumDoc)} }
我使它通過改變控制器方法頭的工作:
public ViewResult DetailOrder(Login loginInfo, string idDocument)
,然後使用在ActionLink的所述NR3對象組合物。但是這不是可重複使用的編碼...我現在真的很想知道如何將ActionLink用於複雜的對象。它甚至有可能嗎?我還沒有在ms教程中找到一個例子。
感謝
該框架是爲了把一個HTTP請求'?a = 1&b = 2&c = 3'成.NET可以理解的東西。我不明白爲什麼這應該是可能的 – beautifulcoder 2014-12-04 22:11:43
你是否在查詢字符串中傳遞真實密碼?如果您已經擁有這些屬性,爲什麼不將它們存儲在某個存儲或會話中? – 2014-12-04 22:17:20
@VsevolodGoloviznin我正在使用休息架構,這是我找到的方式,所以我不需要在服務器端控制它。 – 2014-12-04 22:37:06