Question

J'utilise Html.BeginForm et en essayant de passer la valeur de la zone de texte fournie « archname » au poste, Comment puis-je faire cela? Je veux dire que dois-je ajouter au lieu de « someString »?

<% using (Html.BeginForm("addArchive", "Explorer", new { name = "someString" }, FormMethod.Post)) { %> 
    <%=  Html.TextBox("archName")%>
Était-ce utile?

La solution

Le nom que vous faites référence est l'attribut name de l'élément HTML forme, pas les valeurs affichées. Sur vous contrôleur, vous pouvez accéder à quelques façons.

En l'absence de paramètre dans la méthode du contrôleur:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult addArchive()
{
    string archName = HttpContext.Reqest.Form["archName"]
    return View();
}

Avec la FormCollection en tant que paramètre dans la méthode du contrôleur:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult addArchive(FormCollection form)
{
    string archName = form["archName"];
    return View();
}

Avec un certain modèle de liaison:

//POCO
class Archive
{
    public string archName { get; set; }
}

//View
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<Namespace.Archive>" %>    
<%= Html.TextBoxFor(m => m.archName) %>

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult addArchive(Archive arch)
{
    string archName = arch.archName ;
    return View();
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top