You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin中实现仅选中配送单选按钮时触发地址为空提示弹窗

解决单选按钮逻辑问题:仅在选中配送且地址为空时弹出提示

看起来你的问题出在下单触发的逻辑里——你没有先判断用户到底选的是自提还是配送,不管选啥只要地址空就弹提示,这就导致选自提的时候也会触发错误的提示。

咱们只需要在地址检查前加一层判断:确认用户选中的是配送模式,再去校验地址是否为空。这里给你两种可行的修改方案,选你顺手的来就行:

方案一:直接检查配送单选按钮的状态

这种方式最直接,能确保和UI上的选中状态完全一致:

private async void placeOrderTap_Tapped(object sender, EventArgs e) {
    try {
        // 只有选中配送模式时,才检查地址
        if (DeliveryMode.IsChecked == true) {
            // 优化地址为空的判断逻辑,避免空引用风险
            bool addressIsEmpty = string.IsNullOrEmpty(_cart.data.user_address) 
                                 || _address_id == null 
                                 || _address_id.ToString() == "0";

            if (addressIsEmpty) {
                await DisplayAlert("Alert", Message.addressBlank, "Ok");
                return;
            }
        }

        // 这里放你原本的下单逻辑,比如提交订单到后端等操作
    }
    catch (Exception ex) {
        // 建议加上异常处理,方便排查问题
        Console.WriteLine("下单过程出错: " + ex.Message);
    }
}

方案二:用你定义的delivery_pickup变量判断

如果你更信任自己维护的状态变量,也可以用它来判断:

private async void placeOrderTap_Tapped(object sender, EventArgs e) {
    try {
        if (delivery_pickup == "delivery") {
            bool addressIsEmpty = string.IsNullOrEmpty(_cart.data.user_address) 
                                 || _address_id == null 
                                 || _address_id.ToString() == "0";

            if (addressIsEmpty) {
                await DisplayAlert("Alert", Message.addressBlank, "Ok");
                return;
            }
        }

        // 后续下单逻辑
    }
    catch (Exception ex) {
        Console.WriteLine("下单过程出错: " + ex.Message);
    }
}

额外小提示

  • 注意_address_id如果是null的话,直接调用ToString()会抛出空引用异常,所以我在判断里先加了_address_id == null的检查,比你原来的写法更安全。
  • 确保你的单选按钮点击事件里的状态赋值是正确的,比如PickupRadioButtonClick里确实把DeliveryMode.IsChecked设为了false,这样判断的时候才不会出错。

内容的提问来源于stack exchange,提问作者stoneshaq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 17:22:57