Я могу легко показать / скрыть <div>
на основе этого кода:
<div class="form-group">
@Html.LabelFor(m => m.countryID, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.DropDownListFor(m => m.countryID, ((IEnumerable<Corporate.Models.Country>) ViewBag.Possiblecountries).OrderBy(c => c.countryName).Select(option => new SelectListItem
{
Text = Html.DisplayTextFor(_ => option.countryName).ToString(),
Value = option.countryID.ToString(CultureInfo.InvariantCulture),
Selected = (Model != null) && (option.countryID == Model.countryID)
}), new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.countryID, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group" id="vatNumberDiv">
@Html.LabelFor(m => m.vatNumber, new {@class = "col-md-2 control-label"})
<div class="col-md-10">
@Html.TextBoxFor(m => m.vatNumber, new {@class = "form-control"})
@Html.ValidationMessageFor(m => m.vatNumber, "", new {@class = "text-danger"})
</div>
</div>
и на основании этого сценария:
<script type="text/javascript">
$(function () {
$('#countryID').change(function () {
var value = $(this).val();
if (value == 'FRA') {
$('#vatNumberDiv').show();
} else {
$('#vatNumberDiv').hide();
}
});
});
</script>
а как насчет проверки всех членов ЕС? У меня есть метод с именем bool IsMemberEU()
, для выполнения которого требуется контекст MVC. Могу ли я назвать это внутри сценария?
Может быть, лучше сгенерировать по коду все опции внутри скрипта? Что-то вроде:
if (value == 'FRA' ||
value == 'DEU' ||
value == 'ITA' ||
...
...
) {
У меня есть другой вариант?
Спасибо.
EDIT:
Это код, который мне нужен, чтобы проверить, является ли страна членом ЕС:
foreach(Country c in context.Countries)
{
if (IsMemberEU(c))
{
// is EU memeber
}
}
EDIT2: Для M12 Bennet
<script type="text/javascript">
// $(function () {
$(document).ready(function() {
$('#countryID').change(function () {
// get selected option to submit to method IsMemberEU
var selectedOption = $(this).val();
// create URL for ajax call
var ajaxUrl = '@Url.Action("IsMemberEU", "Customers")';
$.ajax({
url: ajaxUrl,
data: { countryAbbv: selectedOption },
success: function(result) {
if (result) {
$("#vatNumberDiv").show();
} else {
$("#vatNumberDiv").hide();
}
// show result of ajax call in the `p` element on page. This is just testing to see if ajax call worked.
// this can be done with console.log(result) as well.
$("#ShowResult").text(result);
},
error: function(xhr, status, error) {
console.log(xhr);
}
});
});
});
</script>