0

私は Html.BeginForm を使用しており、提供された textBox "archName" の値を投稿に渡そうとしていますが、どうすればそれを行うことができますか? 「someString」の代わりに何を追加すればよいのでしょうか?

<% using (Html.BeginForm("addArchive", "Explorer", new { name = "someString" }, FormMethod.Post)) { %> 
    <%=  Html.TextBox("archName")%>
4

1 に答える 1

1

参照している名前は、投稿された値ではなく、フォーム HTML 要素の name 属性です。コントローラーでは、いくつかの方法にアクセスできます。

コントローラーメソッドにパラメーターがない場合:

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

コントローラーメソッドのFormCollectionas パラメーターを使用:

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

いくつかのモデル バインディングを使用:

//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();
}
于 2011-04-29T20:16:21.013 に答える