2016-12-21 11 views
2

はねえ、私はそうここMVCに新たなんだ、すべては私がこだわっている私の質問です上:私から目に見えるために偽の私の見解上のボタンを設定するにはどうすればよいASP.net MVC5コントローラからビューにボタンにアクセスするには、

コントローラ?

ボタンのマイビューのコードは次のとおりです。

<Button class="btn btn-primary btn-large btnCustom5" id="AdminMode">Admin Mode</Button> 

そして、私のコントローラのコードは次のとおりです。

public ActionResult getMainData() 
{ 
    //More code up here.... 

    if (Permissions == "ADMIN") { 
     AdminMode.Visible = True; 
    } else { 
    AdminMode.Visible = False; 
    } 

    //More code down here.... 
} 

しかし、上記のコードは上だAdminModeボタン「を参照してください」していないようです見る?

ボタンを変更するにはどうすればよいですか?

答えて

3

あなたは、かみそりを使ってあなたのビュー内のものを隠します。

@if(Model.Admin.Visible) 
{ 
<Button class="btn btn-primary btn-large btnCustom5" id="AdminMode">Admin Mode</Button> 
} 

モデルを使用していることを確認してください。

モデル:

public class Model 
{ 
public Admin{get; set;} 
} 

ビューモデルは、基本的に、あなたのビューにビュー固有の情報を渡すだけのコンテナクラスです。

他のアプローチでは、ViewData/Viewbag(同じことです)を使用します。これはデータをビューに渡すもう1つの方法です。

コントローラー:

ViewBag.IsAdmin == true; 

ビュー:

@if(ViewBag.IsAdmin) 
{ 
<Button class="btn btn-primary btn-large btnCustom5" id="AdminMode">Admin Mode</Button> 
} 
+0

感謝。私はそれを使用していないので、モデルがどのように見えるかを示すことができますか? – StealthRT

+0

私はポストを数回更新しました。それ以上の説明は必要ですか? –

+0

それは動作します!ありがとう! – StealthRT

3

MVCはWebフォームより少し異なっています。あなたは実際にサーバー上にコントロールツリーを持っていないので、コントローラ内のどの要素にもアクセスすることはできません。できることはコントローラのViewBagに値を追加し、その値に応じてボタンの表示を変更することです。

コントローラー:

public ActionResult getMainData() 
{ 
    //More code up here.... 

    if (Permissions == "ADMIN") { 
    ViewBag.AdminMode = True; 
    } else { 
    ViewBag.AdminMode = False; 
    } 

    //More code down here.... 
} 

ビュー:情報、ジェシーのため

@if (ViewBag.AdminMode) { 
    <Button class="btn btn-primary btn-large btnCustom5" id="AdminMode">Admin Mode</Button> 
} 
+0

この例ではモデルを使用する必要はありませんか? – StealthRT

+0

@StealthRT nope。しかし、MVCの最初の手紙はModel – Steve

+0

ですから、ViewBagは@Steveが指摘しているように最も簡単で簡単なオプションですが、フォームとフォームの投稿を処理するアクションがある場合は、フォームエラーがある場合、またはビューを再度レンダリングしたい場合は、ViewBag変数を使用します。その場合、Jesse Morelandの元の答えがより良い選択になるでしょう。 –

関連する問題