2009-04-03 4 views
1

Vu le code suivant:objets défilants en tant que paramètres à ActionResult méthodes dans ASP .Net MVC de client de bureau

using (var client = new WebClient()) 
    { 
    string url = string.Concat(someUrl, "SomeControllerName/", currentId, "/WriteLogFile"); 
    var toWrite = DateTime.Now 

    /* Code to post object to URL goes here e.g. client.UploadValues(url, someNameValueCollectionObject)*/ 
    } 

Et la signature de la méthode de commande:

public ActionResult WriteLogFile(DateTime date, int id) 

Comment puis-je faire la première partie du code passez l'objet DateTime à cette méthode ActionResult?

Répondre

0

Ajouter un paramètre de chaîne de requête:

var toWrite = DateTime.Now; 
string url = string.Concat(someUrl, "SomeControllerName/", currentId, "/WriteLogFile"); 
url = string.Concat(url, "?date=", toWrite.ToString("s")); 
+0

C'est la solution que j'ai actuellement pour le moment. Je convertis chaque objet en sa représentation sous forme de chaîne. – Draco

+1

Eh bien, peu importe ce que vous aurez à convertir en une représentation de chaîne, puisque vous faites une requête HTTP. Si vous n'avez pas de route qui inclut un paramètre "date", vous devrez utiliser QueryString comme Craig le suggère. –

+0

Eh bien, c'est la seule façon de le faire. Http est un texte brut: http://blogs.teamb.com/craigstuntz/2009/02/16/38024/ Les chaînes de requête sont du texte. Les champs de formulaire sont du texte. Tout ce que vous pouvez transmettre au serveur dans une requête GET est du texte. –

1

vous pouvez utiliser la chaîne de format pour la date

string url = string.Format("someUrl/SomeControllerName/WriteLogFile/{0}/{1}", currentId, DateTime.Now.ToString("MM-dd-yyyy")); 

et ajoutez une entrée dans le tableau des routes pour acheminer au contrôleur approprié et l'action

routes.MapRoute("SomeRoutename", 
       "SomeControllerName/WriteLogFile/{id}/{date}", 
       new { controller = "SomeControllerName", action = "WriteLogFile", 
         date= DateTime.Now}); 
Questions connexes