2017-02-17 5 views
0

は私がStoreAsIndivStoreAsOrgにビューのマッピングで2つのチェックボックスを持っているMVC 5 - 2つのブール値を比較して、ビューで3番目のブーイングとして設定するにはどうすればよいですか?

ビュー

@Html.HiddenFor(x => Model.IsPersistable}) 

モデル

public class MyModel() 
{ 
    public bool IsPersistable{ get; set; } 
    public bool StoreAsIndiv {get;set;} 
    public bool StoreAsOrg {get;set;} 
} 

持っています。いずれかが選択されている場合、私はIsPersistableにはtrueを割り当てたいと思っていました。これは隠しフィールドです。

これを行う方法は? /更新

EDIT:私は任意のJavascriptを避けたいあなたは次のことを試みることができる可能

+0

ユーザーが元のページの値を変更した場合、これをJavaScriptで行います。 – Jasen

+0

Javascriptを使用しない方法はありますか? – GilliVilla

+0

答えが必要な主な質問は次のとおりです。ユーザーが元の値を変更しましたか?はいの場合は、クライアント側のコードを使用する必要があります。 – Jasen

答えて

1

場合:

$(function(){ 
    var isPersistableEle = $("#IsPersistable"); 
    var storeAsIndivEle = $("#StoreAsIndiv"); 
    var storeAsOrgEle = $("#StoreAsOrg"); 

    function checkUncheckIsPersistable(){ 
     if(storeAsIndivEle.is(':checked') 
      && storeAsOrgEle.is(':checked')){ 
      isPersistableEle.prop('checked', true); 
     } else { 
      isPersistableEle.prop('checked', false); 
     } 
    } 

    storeAsIndivEle.on("change", function(){ 
     checkUncheckIsPersistable(); 
    }); 

    storeAsOrgEle.on("change", function(){ 
     checkUncheckIsPersistable(); 
    }) 
}); 
1

あなたがIsPersistableの値のみをレンダービューに設定されることを言えば

@Html.HiddenFor(x => x.IsPersistable, new { Value = Model.StoreAsIndiv || Model.StoreAsOrg }) 

のように試してみるか、model @ Jasenの答えの値を変更したい場合はユーザーが値を変更したが

@model MyModel 
@{ 
    Model.IsPersistable = Model.StoreAsIndiv || Model.StoreAsOrg; 
} 

@Html.HiddenFor(x => Model.IsPersistable) 

HiddenFor()意志をピックアップ、あなたが以前に設定された値をIsPersistable影響を与えることができない場合は

1

ただ、これにあなたのモデルを変更:

public class MyModel() 
{ 
    public bool IsPersistable{ get { return StorageAsIndiv || StorageAsOrg; } 
    public bool StoreAsIndiv {get;set;} 
    public bool StoreAsOrg {get;set;} 
} 

IsPersistableあなたは、コントローラ上で使用するフィールドである場合、あなたはJavaScriptを必要としません。あなたがその価値に基づいてdomを操作しようとしているなら、あなたは上記で提案した@Christosとしていくつかを使用しなければなりません。

関連する問題