2011-01-18 5 views

答えて

12

あなたの入力はbuttonです。これらは追加のクライアントサイドコードなしで何もしません。

サーバーで「イベント」をASP.NETで扱うのと同様の方法で処理する場合は、送信ボタンに変換する必要があります。あなたがビューにモデルを渡すことによって開始したい

public ViewResult Register() 
{ 
    return View(); 
} 

:あなたの現在コードは、このような何かを見てしまう「REGISTER」をお使いのコントローラが「アカウント」と呼ばれ、あなたのアクションが呼び出されると仮定すると、

public ViewResult Register() 
{ 
    var registerModel = new RegisterModel(); 

    return View(registerModel); 
} 

現在のビューでは、入力がゆるやかです。モデルを渡すので、強く型付けされたビューを使用できます。あなたのモデルは、次のようになります。

public class RegisterMode 
{ 
    public string Firstname { get; set; } 
    public string Surname { get; set; } 
} 

はこのように見えるように、強く型付けされたビューを使用して、あなたのビューを変更するには:

我々はラベルとテキストを構築するためのビューを告げている何をやったか
<%using (Html.BeginForm()) 
{ %> 
    <%=Html.LabelFor(x => x.Firstname)%> 
    <br/> 
    <%=Html.TextBoxFor(x => x.Firstname)%> 
    <br/><br/> 
    <%=Html.LabelFor(x => x.Surname)%> 
    <br/> 
    <%=Html.TextBoxFor(x => x.Surname)%> 
    <br/><br/> 
    <input type="submit" value="Register"/> 
<%} %> 

あなたのRegisterModelタイプのボックス。これにより、コントローラにフォームをPOSTするときにモデル値が自動的にマップされます。 、

public ActionResult Register(RegisterModel model) 
{ 
    // do something with the model, such as inserting it into the database. 
    // model.Firstname will contain the value of the firstname textbox 
    // model.Surname will contain the value of the surnaem textbox 

    return RedirectToAction("Success"); 
} 

一つの安全のために、行うには最後のもの:

はポストを受け入れています、私たちは同じ名前で、コントローラに新しいアクションを追加する必要がありますが、型RegisterModelのパラメータを受け入れます彼らは受け入れる方法を制御するために、あなたのコントローラのアクションに[HttpGet][HttpPost]属性を追加することです:

[HttpGet] 
public ViewResult Register() 

[HttpPost] 
public ActionResult Register(RegisterModel model) 

MVCでhttp://www.asp.net/mvcを読んで、Professional MVCのNerdDinnerチュートリアルの章(PDF形式で無料で入手可能)を読むことをお勧めします。質問に参加

1

が、私はフォームを持っている

それはより具体的にしたい、フォームはすでに送信ボタンがありますが、私は別のボタンに追加のアクションをバインドする必要があります。 はい、私はMVCがイベントをサポートしていないことを知っています。なぜなら、HTMLフォームはそれらをサポートしていないからです。

私は、フォーム内の隠れた入力を作成し、 'onclick'イベント(jquery 'live'メソッド)をバインドすることになっています。

HTML::

<input type="hidden" id="SenderControlID" name="SenderControlID" value="-1" /> 
<input type="hidden" id="SenderControlValue" name="SenderControlValue" value="-1" /> 

JS:ここにコードがある

if ($('#SenderControlID')[0]) { 
     $('input[type="submit"], input[type="button"], input[type="checkbox"], input[type="radio"]').live('click', function() { 
      $('#SenderControlID').val($(this).attr('name')); 
      $('#SenderControlValue').val($(this).val()); 
     }); 
    } 

が、おそらくよりエレガントな解決策はありますか?

関連する問題