2012-04-20 9 views
0

Asp.Net MVCでは、フォーム提出ごとにモデルプロパティをインクリメントしたい(ボタンをクリック)。Asp.net MVC Increment Button

私はHttpGetとHttpPostの両方を試しました。 HttpGetでは、値は常にクエリ文字列によってオーバーライドされ、常に0になります。HttpPostでは、値は0から始まり、ボタンをクリックすると1に増加します。それ以上クリックすると0になり、インクリメントします1.

に私が理解から、それは= 1 0 + 1、0を入力、出力0

それを簡単にする:

@using (Html.BeginForm()) 
{ 
    @Html.HiddenFor(x=>x.Value) or @Html.Hidden("Value", Model.Value) 
    or even <input type="hidden" value="@Model.Value" /> 
    <input type="submit" value="Click Me" /> 
} 

public ViewResult ActionMethod(Model model) 
{ 
    model.Value++; 
    return View(model); 
} 

私の質問は基本的にはこれです: Increment number per button click C# ASP.NET が、 MVCフレームワークで。

このようにモデルプロパティをどのように操作しますか?私はJavascriptを使いたくない。

+0

信じられないかもしれないが、私はJQueryがおそらくこれのための最良の解決策であったと言える。多くの手間をかけずにクライアント側で行うことができる単純なものです。 – mattytommo

+0

更新されたソリューションがこれを実行する唯一の方法です。 MVCは投稿された値を使用してビューを更新するので、ビューをクリアする必要があります。 –

答えて

0

、これが唯一のソリューションです:

私はこれが機能することがわかったが、私は、ビューにモデルパラメータを渡すと、それは

int temp = ++model.Value; 
ModelState.Remove("Value"); 
model.Value = temp; 

本当にひどいです、ビューは、モデルの現在の状態で渡すものを取って、そのパラメータをバインドする必要があります。

-2

あなたはIIRC

UpdateModel(model); 

を呼び出す必要があります。私が言われてきたものとは

+2

ASP.NET MVCにはありません。 –

+0

私はそれが簡単だろうと思っていましたが、私はそれが何か違うことをすることはできません。あなたはそれを呼び出さなければならない時がありますか?私が読んだところでは、UpdateModelはコントローラのモデルをバインドするためのものです。私の見解から、その部分は問題ありません。更新していないビューです。 – quitstalin

+0

私は実際の例を作るのに時間がありませんが、IIRC: 更新が完了したら、UpdateModel(モデル)を呼び出してください。その後、あなたがしたのと同じようにView(モデル)を返します。 暗闇でスタブ:モデルを試してください。値+ = 1;またはmodel.Value = model.Value + 1; また、Fiddlerを使用して、あなたのウェブサーバーに何が入っているのかを確認してください。 – LosManos