2017-11-25 9 views
1

プロパティ 'フラグ'がtrueの場合、ボタンを無効にする必要があります。これは私のモデルとコントローラです。コントローラからボタンを無効にするにはどうしたらいいですか?

public class User { 

     public string Name { get; set; } 
     public bool Flag{ get; set; } 

    } 

コントローラ

public ViewResult Index() { 

    var userFlag = context.Users.Where(u => u.Flag = true).FirstOrDefault(); 

    if (userFlag != false) 
       { 
        // disable button 
       } 
else 
       { 
        // enable button 
       } 

    return View(); 

} 
+1

@IrishChieftainとしてビューのボタンを無効にすることができ

public ViewResult Index() { var userFlag = context.Users.Where(u => u.Flag = true).FirstOrDefault(); ViewBag.UserFlag = userFlag == null ? true : false; return View(); } 

として表示するために、コントローラからフラグ値を渡すViewBagを使用します。 – David

+1

フラグが真であるユーザーしか取得できない場合、フラグが無効のユーザーをどのように返すのでしょうか? –

+1

@OrelEraki:私はまた、そのコード内の 'userFlag'オブジェクトがどのように' bool'となるのか不思議です... – David

答えて

1

ビューにそのフラグ(ブール値)を通過し、条件付きdisabled属性

でボタンをレンダリングする必要が複数の方法でブール値を渡すことができます。

ビューモデルをお持ちの場合は、対応するプロパティを設定します。あなたのビューにYourViewModelと呼ばれるビューモデルがあり、それがブール型のIsEnabledプロパティを持っていて、そのメソッドをアクションメソッドに設定し、ビューモデルをビューに送信したとします。あなたのアクションメソッド

var vm = new YourViewModel(); 
var user = context.Users.Where(u => u.Flag == true).FirstOrDefault(); 
vm.IsEnabled= user != null && user.Flag; 
// Pointless because you are getting the one with True; 
// So the value will be always true if user is not null 
return View(vm); 

とビューでそう

、お使いのモデルのIsEnabledプロパティをチェックし、

@model YourViewModel 
@if (Model.IsEnabled) 
{ 
    <input type="submit" value="Save" /> 
} 
else 
{ 
    <input type="submit" value="Save" disabled="disabled" /> 
} 

それともビューモデルを持っていない場合は/あなたのビューがありますどのクラスにも厳密に型指定されていない場合は、ブール値をページのモデルとして渡すことができます

var user = context.Users.Where(u => u.Flag = true).FirstOrDefault(); 
var flag= user != null && user.Flag; 
// Pointless because you are getting the one with True; 
// So the value will be always true if user is not null 
return View("Index",flag); 

ビューで

@model bool 
@if (Model) 
{ 
    <input type="submit" value="Save" /> 
} 
else 
{ 
    <input type="submit" value="Save" disabled="disabled"/> 
} 

別のオプションは、表示するために、アクションメソッドからこのブールフラグを転送するViewBagを使用することです。

var user = context.Users.Where(u => u.Flag == true).FirstOrDefault(); 
ViewBag.IsEnabled = user != null && user.Flag; 
// Pointless because you are getting the one with True; 
// So the value will be always true if user is not null 
return View(); 

とビューの

@if (ViewBag.IsEnabled !=null && ViewBag.IsEnabled) 
{ 
    <input type="submit" value="Save" /> 
} 
else 
{ 
    <input type="submit" value="Save" disabled="disabled" /> 
} 

ここで私はあなたのレコードのフラグ値がtrueである場合にのみ有効になり、ボタンをレンダリングしています。

1

コントローラではなくビューのボタンを無効にします(コントローラではなく)。まず、コントローラはビ​​ューに情報を送信する必要があります。理想的にはこれはビューモデルの形式ですが、今のところ単純な値をViewBagに入れてみましょう。このようなもの:

ViewBag.UserFlag = userFlag; 
return View(); 

次に、その値を使用できます。例:

ただし、HTMLでは、ボタンは「有効」と「無効」です。必要に応じて三項条件演算子を使用してこれを1行に圧縮することもできますが、それは個人的な好みの問題です。

しかし、ポイントは、コントローラーがUIを表示するために必要なデータをビューに提供するという点です。そのデータに応答してUIを表示するのはビューの責任です。MVCプロジェクトのほとんど有用:

0

あなたは、CASはあなたが

<input type="button" value="Save" @{ if (ViewBag.UserFlag == true){ @: disabled="disabled"} } /> 
関連する問題