2010-05-13 1 views
3

Я хотел передать что-то вроде следующего, чтобы мой взгляд от моего контроллера через GET не POST:Как передать сложные объекты в ASP.NET MVC с помощью параметров Get?

public class MyDTO 
{ 
    public string val1 { get; set; } 
    public string val2 { get; set; } 
    public MyObject obj { get; set; } 
} 

public class MyObject 
{ 
    public int SomeInt { get; set; } 
    public string ACoolValue { get; set; } 
    public string YetAnotherCoolValue { get; set; } 
} 

И тогда контроллер хотел бы, как это. (Обратите внимание, что это GET):

public ActionResult MyView(MyDTO dto) 
{ 
    return View(dto) 
} 

Проблема заключается в том, что экземпляр MyObject возвращается в нуль, где знач1 и val2 есть данные. Неужели кто-нибудь сталкивается с этим?

ответ

3

Я только что создал совершенно новый веб-сайт ASP.NET MVC 2 в Visual Studio 2010, добавил определения двух классов и изменил действие HomeController «О», чтобы иметь параметр dto. Когда я перехожу к URL /Home/About?val1=aaa&val2=bbb&obj.SomeInt=111&obj.ACoolValue=ccc&obj.YetAnotherCoolValue=ddd, все свойства заполняются.

Обратите внимание, что нужно имена propety подъобекта быть с префиксом имени свойства родителя (obj в данном случае)

+0

хммм. В моем случае это не так. Я делаю это из предыдущего ActionResult, я делаю RedirectToAction («MyView», dto). Прежде чем я это сделаю, у меня есть данные в экземпляре MyObject, но когда я перенаправляю ToAction, я теряю его. Я устанавливаю точку прерывания в MyView и вижу нуль. – Vishal

+0

Как выглядит URL-адрес после перенаправления, есть ли значения? правильны ли их имена? –

+0

url не содержит obj.SomeInt и т. Д. Он выглядит так: //theurl.com?val1=aaa&val2=bbb&MyObject=ObjectNamespace.MyObject – Vishal

Смежные вопросы