2016-03-19 16 views
-1

私はこのポストの形で自分のビューのためのかみそりのファイルを使用しています:レイザービューはコントローラに入力を送信していませんか?

@using (Html.BeginForm("Save", "MyEventController", FormMethod.Post)) 
{ 
    <md-input-container class="md-block" flex-gt-xs=""> 
     <label>Title</label> 
     <input type="text" name="title" /> 
    </md-input-container> 

     <md-input-container class="md-block"> 
      <label>Address</label> 
      <input type="text" name="address" id="txtAddress"> 
     </md-input-container> 


     <md-button class="md-raised"> 
      <input type="submit" value="Save" /> 
     </md-button> 
} 

私は以下のショーとしてのコントローラ/ EventController.csで私のコントローラに私の入力を送りたい:

public class MyEventController : Controller 
{ 
    [HttpPost] 
    public void Save(FormCollection collection) 
    {    
     InputEvent y = new InputEvent(); 
     y.title = collection["title"]; 
     y.address = collection["address"]; 
    } 
} 

Save()メソッドは決して呼び出されないようです。 Save()に送信するにはどうすればよいですか?私は、Visual Studioで2015

+2

voidの代わりにActionResultを試してください。 –

答えて

0

を開発しています

ActionResult代わりのvoidを試してみてください。 MSDNから

応答に開始タグを書き込み。ユーザーがフォームを送信すると、リクエストはアクションメソッドによって処理されます。

3

コントローラーを指定するときに、「コントローラー」というテキストを削除します。

Html.BeginForm("Save", "MyEvent", FormMethod.Post) 
1

"Controller"という単語を2番目のパラメータ "MyEventController"から削除します。したがって、それは "MyEvent"でなければなりません。

さらに、モデル(MVCからのM)を作成し、フォームがポストされると、FormCollectionを受け取る代わりに、代わりに素敵なモデルを受け取ります。 ASP MVCがあなたのためにバインディングを処理します。

また、他の人が指摘しているように、最終的にクライアントに何かを戻して、フォームの提出と処理が成功したかどうかを指定できます。したがって、あなたの行為は無効になるべきではありません。このような場合のほとんどの場合、PRGパターンを使用する必要があります。このパターンを使用することは非常に重要です。