0

バックグラウンド

ビュー モデル クラスに bool があります。ブール値が true か false かを確認する if ステートメント チェックがあります。false の場合、値を true に設定してビューを呼び出します。ビューには、クリックするとビューが更新されて再度呼び出されるボタンがあります。私の問題は、ビューがロードされたときに bool が false に設定され続けることです。なぜこれが起こっているのかわかりません。bool が変更されないようにする方法はありますか?

試み

MVC がステートレスであることは承知しています。

私が作業するために与えられたビューは、入力タグの「値」属性が既に使用されている .aspx ビューです。そのため、送信ボタンの値を更新できません。

<input type="submit" class="button" value="bvCalc" />

質問

いずれにせよ、ブールの状態を維持しようとしています。これを行う方法がわかりません。また、この時点で行うのが最善かどうかについても確信が持てません。

  1. ビューで隠しフィールドを使用する
  2. bool を true から false に更新する HTML ヘルパー拡張機能を構築する
  3. if ステートメントでデータを評価できるように、コントローラーに送り返されるモデル情報と共に変更された値を返します。
4

2 に答える 2

1

ビューからコントローラーに値を取得する方法は、ModelBinding. これがどのように機能するのかよくわからない場合は、Google で検索して理解を深めてください。

簡単な例として、bool を渡したいコントローラーのアクション メソッドが次のようになっているとします。

public ActionResult MyAction(MyViewModel model)
{
  //.. do something here.
}

ViewModel は次のようになります。

public class MyViewModel
{  
   public bool MyBool { get; set; }
   // ...more properties...
}

ビューに、プロパティ名 (この場合は「MyBool」) と正確に一致する名前と、プロパティに変換される値 (この例では文字列「True」はブールtrue値にマップできます)-コントローラーアクションでModelBinding入力できmodel.MyBoolます。true

組み込みのヘルパー メソッドを使用する場合、フィールド要素で正しい名前/値を取得することを心配する必要はありません。MVC がこれを行います。

たとえば@Html.HiddenFor(model => model.MyBool) 、HTMLを次のようにレンダリングします

<input type="hidden" id="MyBool" name="MyBool" value="True" />
于 2012-10-29T00:37:20.677 に答える
0

ブールを使用しますか?あなたのモデルで。それがなければ、bool は常にデフォルトで false になります。

于 2012-10-28T23:36:11.873 に答える