2014-09-15 2 views
0

Я не мог понять, почему флажок не отображает значение. исходный кодФлажок Значение не заполняется

<input type="checkbox" name="@row.Checkbox.Name" value="@row.Checkbox.Text"/> 

генерируется HTML Является ли

<input type="checkbox" name="chkparent" value=" I am the parent or legal guardian of the named child/children in my family membership and I give consent for them to take part in organised paddling activities (Kayak and/or Canoe) and I agree they will abide by the rules and regulations of Totnes Canoe Club at all times."/> 

Я пытался поставить HTML генерируется непосредственно на странице, но все же он не показывает значение. то, что я вижу, - это только флажок.

+0

Вам нужно создать ярлык или аналогичный элемент, если Ваше желание, чтобы отобразить текст. –

+0

И как правило, значение флажка является либо истинным, либо ложным. I.e привязано к логическому значению –

ответ

1

Значение checkbox не может быть использован для отображения текста. Вам нужно поставить div или аналогичный рядом с этим флажком. Как так:

<div> 
    <input type="checkbox" name="chkparent" style="float:left;margin-right:5px;"/> 
    <div> 
     I am the parent or legal guardian of the named child/children in my family membership and I give consent for them to take part in organised paddling activities (Kayak and/or Canoe) and I agree they will abide by the rules and regulations of Totnes Canoe Club at all times. 
    </div> 
</div> 

Если вы хотите, чтобы сделать это легко для пользователя, вы должны прикрепить обработчик щелчка к тексту (предполагающей Jquery):

<div> 
    <input type="checkbox" id="chkparent" name="chkparent" style="float:left;margin-right:5px;"/> 
    <div id="chktext" style="cursor:pointer;"> 
     I am the parent or legal guardian of the named child/children in my family membership and I give consent for them to take part in organised paddling activities (Kayak and/or Canoe) and I agree they will abide by the rules and regulations of Totnes Canoe Club at all times. 
    </div> 
</div> 

<script> 
    $(function(){ 
     $("#chktext").on("click", function(){ 
      if ($("#chkparent").is(":checked")) { 
       $("#chkparent").prop("checked", false); 
      } else { 
       $("#chkparent").prop("checked", true); 
      } 
     }); 
    }); 
</script> 
+1

Зачем вам использовать jquery для этого, когда вы можете использовать '

+0

Хороший вопрос! Я предвзятый, я всегда создаю пользовательские флажки без элемента ввода. –

1

Вы бы лучше создавать сильно типизированную модель представления с свойством bool для этого и украшением ее с отображаемым именем.

Отображаемое имя может быть использовано для визуализации метки для следующим образом:

View Model

public class AViewModel 
{ 
    [DisplayName("Selection 1")] 
    public bool MySelection { get; set; } 
} 

Посмотреть

@Html.LabelFor(m => m.MySelection) 
@Html.CheckBoxFor(m => m.MySelection) 

Working example

1

Вы можете подтвердить значение row.Checkbox в своем контроллере, прежде чем возвращать представление, чтобы проверить, следует ли флажок устанавливать или не проверять.

Затем присвоить эту информацию переменной ViewBag:

ViewBag.checked = "checked"; 

А на ваш взгляд:

<input type="checkbox" name="@row.Checkbox.Name" @ViewBag.checked/> 

Это будет производить HTML из

<input type="checkbox" name="@row.Checkbox.Name" checked/> 

если флажок должен и

<input type="checkbox" name="@row.Checkbox.Name"/> 

для непроверенного флажка

1

без необходимости модифицировать текущую модель, код должен выглядеть следующим образом:

<label for="@row.Checkbox.Name">@row.Checkbox.Text @Html.CheckBox(row.Checkbox.Name, false)</label> 
Смежные вопросы