2009-08-31 31 views
6

asp.net mvcのテキストボックスの値を取得して、値を変数に格納するにはどうすればよいですか?サブミット時にasp.net mvc textboxから値を取得する

インデックスビューページに<%=Html.TextBox("testbox") %>のようなテキストボックスがあります。

私はあなたが新しいMVCアプリを開いたときに来て、デフォルトのビューページを使用しています。この<input type="submit" />

のようなボタンがあります。

ありがとうございました。

答えて

8

コントローラでは、

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Search(FormCollection collection) 
{ 
    String g = collection["textFieldname"] 
} 

です。

TryUpdateModel(modelName); 

上記のものが好ましい。 TryUpdateModelの詳細情報が必要な場合はコメントを投稿してください。

EDIT:

ではなく、それは単にあなたを表示させて頂いて説明。お使いのコントローラで

:あなたのビューで次に

public class MyFormViewModel 
{ 
    public string myInput {get; set;} 
} 

public ActionResult Search() 
{ 
    MyFormViewModel fvm = new MyFormViewModel(); 
    return View(fvm); 
} 

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Search(FormCollection collection) 
{ 
    MyFormViewModel fvm = new MyFormViewModel(); 
    TryUpdateModel<MyFormViewModel>(fvm); 

    string userInput = fvm.myInput; 
} 

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<YOURNAMESPACE.Controllers.MyFormViewModel>" %> 

<%= Html.TextBox("myInput", Model.myInput) %> 

2つのことに注意してください。

ページはコントローラで定義されたモデル/クラスから継承しています。そのための最良の場所ではありませんが、例としてそれはしません。

もう1つは、テキストボックスがモデルのプロパティと同じ名前であることです。この場合、myInput。

コントローラがUpdateModelを実行すると、フォームビューモデル内のフィールド名とテキストボックス名が一致します。

意味がありますか?

EDIT 2

はまた、ボタンやあなたのフィールドをラップすることを忘れないでください。

<% using (Html.BeginForm()) {%> 
+0

こんにちは、返事をありがとう...感謝 – Josh

+0

は、私はそれを理解して....それを見て... tryupdatemodel(モデル名)がビュー上のテキストボックスを持つ任意の関係を持っているか教えてくださいます。.. .. ここで... <%= Html.TextBox( "myInput"、Model.myInput)%>、Model.myInputは自動的にmyFormViewModel.myinputにマップされますか?関連するクラス名を取得してリフレクションを使用して自動的に解決するとあなたが指摘したものだと思います...ビュー上で "Model.MyInput"と呼ぶため、やや頭が回転しますが、おそらくコードを記述すると思いますそれが動作します。 – Josh

+0

私はそれがどのモデルをどのように知っているのか、そしてどこで...それは私が考えていたものなのかを意味します。 – Josh

関連する問題