2013-08-23 13 views
6

Bir nesneyi bir ActionLink üzerinden bir MVC denetleyicisindeki bir yönteme iletmeye çalışıyorum.Html.ActionLink() bir C# nesnesini geçirmeye çalışmaz

jilet sözdizimi:

@Html.ActionLink("Export to Excel","ReturnExcelOfViewableResponses",new { SearchObject = Model.SearchObject}) 

aslında biçimlendirme olarak görüntülenen Ne:

<a href="/EducationAgency/ReturnExcelOfViewableResponses?SearchObject=DTO.SearchObject" tabindex="29">Export to Excel</a> 

denetleyici yöntemi burada post dolayısıyla hiçbir neden sadece iyi deniliyor. Gerçek değerlerin DTO.SearchObject yerine actionLink'e geçirilmesi için ne yapılması gerekiyor? HTML.ActionLink method'a göre doğru sözdizim var gibi görünüyor (MVC 4 kullanarak).

cevap

9

Bunu ActionLink içine parametre olarak, sadece müzik varsayarak, DTO geçmesi gerekir:

@Html.ActionLink("Export to Excel","ReturnExcelOfViewableResponses",Model.SearchObject) 

tüm genel alanlar sorgu parametresi anahtar/değer çifti olarak eklenecektir.

+0

Teşekkürler! Öyleydi. Yeni MVC 4 formatı bu mu? – levininja

+1

@levininja - nah, sorunuza bağlandığınız cevabın tersine, bu yöntemler için MVC 1, 2, 3 ve 4 arasında büyük bir fark olmadığından eminim. Bu işlevsellik, anonim bir nesneyi (sorunuzdaki örnekte olduğu gibi) geçirmeye kıyasla nadiren kullanılır. Her iki durumda da, geçirilen nesne rota değerlerini tanımlar - ve nesnenin (birinci seviye) özellikleri (nihayet) yansıma ile sorgu parametrelerine dönüştürülür - hangi nesnenin önemi yoktur. Ancak, sorunuzu ilettiğiniz anonim nesnenin yalnızca bir "birinci düzey" özelliği vardır: SearchObject. – JimmiTh

İlgili konular