2017-02-17 14 views
0

У меня естьВ MVC 5 - Как сравнить 2 булевых значения и установить его как третий booelan в View?

Посмотреть

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

Модель

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

У меня 2 флажков в отображении вида на StoreAsIndiv и StoreAsOrg. Если любой из них выбран, мне нужно присвоить значение true IsPersistable, который является скрытым полем.

Как это сделать?

EDIT/Update: Я хочу, чтобы избежать каких-либо 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 }) 

или если вы хотите изменить значение в ответе модели @ Jasen Лучше всего

1

Если пользователь может изменять значения, но не влияют на IsPersistable то

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

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

пикап HiddenFor() будет значение, которое вы установите ранее.

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, предложенные выше.

 Смежные вопросы

  • Нет связанных вопросов^_^