2016-08-28 4 views
0

私はオークションWebサイトでオークションを作成するためのインターフェイスを持っています。ビューモデル外のビューからコントローラデータへのMVCの渡し

@using (Html.BeginForm("AddAuction", "Auction", FormMethod.Post, new { enctype = "multipart/form-data" })) 
{ 
    @Html.ValidationSummary(true) 
    <div class="form-group"> 
      @Html.LabelFor(model => model.title, new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.EditorFor(model => model.title) 
      @Html.ValidationMessageFor(model => model.title) 
     </div> 
    </div> 

    (...) some other fields 




    <div class="form-group"> 
     @Html.LabelFor(model => model.startDate, new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.EditorFor(model => model.startDate) 
      @Html.ValidationMessageFor(model => model.startDate) 
      <input type="checkbox" id="gm" name="gm" value="Now" onclick=""> Now<br> 
     </div> 
    </div> 



(...) some other fields (...) 

<div class="form-group"> 
    <div class="col-md-offset-2 col-md-10"> 
     <button type="submit" class="btn btn-default">Send</button> 
    </div> 
</div> 
} 

問題は「今すぐ」のチェックボックスです。私はそれがチェックされると、コントローラはstartDateをDateTime.Nowに設定するように動作します。 残念ながら、モデルを編集せずにチェックボックスの値をコントローラに渡す方法があるかどうかはわかりません。私は次のようなものを探しています:

public async Task<ActionResult> AddAuction(Auctions auction, **bool checked**) 

このようにパラメータを渡す方法はありますか?

+1

メソッドのパラメータro 'string gm'(' name'属性と一致するように)を変更します。しかし、あなたの編集データは、あなたのデータモデルではなく、ビューモデルを使用してください –

+0

@StephenMueckeありがとう、すべてが動作します:) – Simon

答えて

2

ことはあなたのチェックボックスの値がブール値である場合、あなたはこのような何か行うことができます。

<input type="checkbox" id="gm" name="gm" value="True"> Now<br> 
<input type="hidden" name="gm" value="False"> 

をそして、彼らがチェックされている場合、コントローラに

public async Task<ActionResult> AddAuction(Auctions auction, bool gm) 

チェックボックスにのみなぜそれがだ、提出されていますチェックボックスがチェックされていない場合は、同じ名前の隠し入力を追加してfalse値を送信する必要があります。

隠し入力を使用しない場合は、アクションのboolパラメータをnullableにし、nullをfalseとして扱うことができます。

public async Task<ActionResult> AddAuction(Auctions auction, bool? gm = null) 
{ 
    if(gm == null) 
    gm = false; 
} 
関連する問題