отключите блок проверки допустимости asp.net с помощью jQuery

Можно кодировать исходный запрос:

var query = from tags in db.TagsHeaders
                where tags.CST.Equals(this.SelectedCust.CustCode.ToUpper()) 
                && Utility.GetDate(DateTime.Parse(this.txtOrderDateFrom.Text)) <= tags.ORDDTE
                && Utility.GetDate(DateTime.Parse(this.txtOrderDateTo.Text)) >= tags.ORDDTE
                select tags;

И затем на основе условия, добавьте дополнительный где ограничения.

if(condition)
    query = query.Where(i => i.PONumber == "ABC"); 

я не уверен, как кодировать это с синтаксисом запроса, но идентификатор действительно работает с лямбдой. Также работы с синтаксисом запроса для начального запроса и лямбдой для вторичного фильтра.

можно также включать дополнительный метод (ниже) которого я кодировал некоторое время назад для включения условного выражения где операторы. (Не работает хорошо с синтаксисом запроса):

        var query = db.TagsHeaders
            .Where(tags => tags.CST.Equals(this.SelectedCust.CustCode.ToUpper()))
            .Where(tags => Utility.GetDate(DateTime.Parse(this.txtOrderDateFrom.Text)) <= tags.ORDDTE)
            .Where(tags => Utility.GetDate(DateTime.Parse(this.txtOrderDateTo.Text)) >= tags.ORDDTE)
            .WhereIf(condition1, tags => tags.PONumber == "ABC")
            .WhereIf(condition2, tags => tags.XYZ > 123);

дополнительный метод:

public static IQueryable<TSource> WhereIf<TSource>(
    this IQueryable<TSource> source, bool condition,
    Expression<Func<TSource, bool>> predicate)
{
    if (condition)
        return source.Where(predicate);
    else
        return source;
}

Вот тот же дополнительный метод для IEnumerables:

public static IEnumerable<TSource> WhereIf<TSource>(
    this IEnumerable<TSource> source, bool condition,
    Func<TSource, bool> predicate)
{
    if (condition)
        return source.Where(predicate);
    else
        return source;
}
15
задан Tony L. 11 December 2017 в 19:15
поделиться

2 ответа

Я полагаю, что ValidatorEnable принимает идентификатор ASP.net, а не идентификатор клиента, созданный ASP.net. Вам также нужно будет сделать проверку условной в CodeBehind.

вот пример:

В частности, используется возможность включать или отключать валидаторы. Если у вас есть проверка, которую вы хотите активировать только в определенных сценариях, вам может потребоваться изменить активацию как на сервере, так и на клиенте, или вы обнаружите, что пользователь не может отправить страницу.

Вот предыдущий пример с полем, которое должен проверяться только тогда, когда флажок снят:

public class Conditional : Page {
    public HtmlInputCheckBox chkSameAs;
    public RequiredFieldValidator rfvalShipAddress;
    public override void Validate() {
        bool enableShip = !chkSameAs.Checked;
        rfvalShipAddress.Enabled = enableShip;
        base.Validate();
    }
}

Вот эквивалент на стороне клиента:

<input type=checkbox runat=server id=chkSameAs 
   onclick="OnChangeSameAs();" >Same as Billing<br>
<script language=javascript>
function OnChangeSameAs() {
    var enableShip = !event.srcElement.status;
    ValidatorEnable(rfvalShipAddress, enableShip);
}
</script>

Ссылка: http://msdn.microsoft.com/en-us/library/aa479045.aspx

6
ответ дан 1 December 2019 в 04:09
поделиться
ValidatorEnable(document.getElementById($(this).attr('id')), true); 
2
ответ дан 1 December 2019 в 04:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: