Вместо этого используйте this.randInt
. randInt
не является опорой, скорее определена в классе.
class Question extends React.Component {
constructor(props) {
super(props);
this.randInt = String(Math.floor(Math.random()*2) + 1);
}
question = {
quest: questions[this.randInt].quest,
answers: questions[this.randInt].answers,
correct: questions[this.randInt].correct
}
}
О, спасибо! Это определенно помогло. Итак, мне действительно нужно больше html внутри, поэтому я попробовал метод заполнителей, на который вы указали.
Итак, у меня есть это сейчас:
<asp:PlaceHolder id="PlaceHolder1" runat="server" Visible='<%# Eval("Video File") != "" %>'>
Video Stuff
</asp:PlaceHolder>
<asp:PlaceHolder id="PlaceHolder2" runat="server" Visible='<%# Eval("Video File") == "" %>'>
Audio Stuff
</asp:PlaceHolder>
Он почти работает, за исключением того, что видеофайл виден в обоих случаях, когда он должен только для первого.
Я также попробовал это:
<asp:PlaceHolder id="PlaceHolder1" runat="server" Visible='<%# Eval("Video File") != "" %>'>
Video Stuff
</asp:PlaceHolder>
<asp:PlaceHolder id="PlaceHolder2" runat="server" Visible='<%# Eval("Audio File") != "" %>'>
Audio Stuff
</asp:PlaceHolder>
Но это заставило оба показать все время. Я чувствую, что это почти там.
Спасибо!
О, не важно, я понял !!
Это сработало окончательно:
<asp:PlaceHolder id="PlaceHolder1" runat="server"
Visible='<%# Field(((DataRowView)(Container.DataItem)), "Video File") != "" %>'>
Video Stuff
</asp:PlaceHolder>
<asp:PlaceHolder id="PlaceHolder2" runat="server"
Visible='<%# Field(((DataRowView)(Container.DataItem)), "Video File") == "" %>'>
Audio Stuff
</asp:PlaceHolder>
Спасибо ТАК большое!
Вы не можете использовать Container.DataItem вне выражений привязки данных <% # ...%>.
Я предлагаю вам изменить свой код на что-то вроде этого (извините, но я не могу протестируйте его в настоящее время):
<ItemTemplate>
<asp:HyperLink runat="server"
Visible='<%# Eval("Video File") != "" %>'
NavigateUrl='<%# Eval("Video File")' Text="Download Link" />
<embed runat="server" Visible='<%# Eval("Video File") == "" %>'
height="14" width="661" name="plugin"
src="<%# ContentUploadURL%>/<%# Field(((DataRowView)(Container.DataItem)), "Audio File")%>"
type="audio/mpeg" autostart="false" />
</ItemTemplate>
Ключ должен установить свойство Visible двух элементов управления на основе поля «Видеофайл» элемента данных.
См. также этот вопрос: Условное связывание данных ASP.Net