如何从我的 Login.cs 接收到 MasterPageDetail 的值?

Posted

技术标签:

【中文标题】如何从我的 Login.cs 接收到 MasterPageDetail 的值?【英文标题】:How can receive a value from my Login.cs to MasterPageDetail? 【发布时间】:2020-01-01 20:24:50 【问题描述】:

当我登录到应用程序时,我需要从数据集中接收代码和用户名,但是当我将这些值从我的 LoginPage.cs 发送到我的 MasterPage.cs 时,它会收到 NULL。我做错了什么?

我有一个名为“Login”的类,它接收值,但不接收它们。

/*Code in the LoginPage.cs*/
var VService = DependencyService.Get<IntValidateLogin>();
string resultC = VService.UserCode(txtUser.Text, txtPwd.Text);
string resultN = VService.UserName(txtUser.Text, txtPwd.Text);
if (resultC == "FALSE" || resultN == "FALSE")

await DisplayAlert("Alerta", "Usted no tiene permisos para ingresar a la Aplicación Smart. Favor verifique sus credenciales", "Aceptar");

else

Login lc = new Login

LoginUserCode = resultC,
LoginUserName = resultN
;
await Navigation.PushModalAsync(new Views.MenuPage(), false);

/*Controller*/

public class Login

public string LoginUserCode  get; set; 
public string LoginUserName  get; set; 


/*MasterDetailPage.cs*/

Login lc;
public MenuPageDetail()

InitializeComponent();
lblName.Text = lc.LoginUserName; /*Here its the error because its null when the activity starts and it chashes*/

/菜单页面代码/

public partial class MenuPage : MasterDetailPage
    

        public MenuPage()
        
            InitializeComponent();
            MasterPage.ListView.ItemSelected += ListView_ItemSelected;
        

        private void ListView_ItemSelected(object sender, SelectedItemChangedEventArgs e)
        
            var item = e.SelectedItem as MenuPageMenuItem;
            if (item == null)
                return;

            var page = (Page)Activator.CreateInstance(item.TargetType);
            page.Title = item.Title;

            Detail = new NavigationPage(page);
            IsPresented = false;

            MasterPage.ListView.SelectedItem = null;
        

/XML/

<?xml version="1.0" encoding="utf-8" ?>
<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="SmartAPPVB.Views.MenuPage"
             xmlns:pages="clr-namespace:SmartAPPVB.Views">
  <MasterDetailPage.Master>
    <pages:MenuPageMaster x:Name="MasterPage" />
  </MasterDetailPage.Master>
  <MasterDetailPage.Detail>
    <NavigationPage>
      <x:Arguments>
        <pages:MenuPageDetail />
      </x:Arguments>
    </NavigationPage>
  </MasterDetailPage.Detail>
</MasterDetailPage>

【问题讨论】:

您正在创建一个登录对象,但您没有对其进行任何操作。您没有将其传递给 MenuPage @Jason MenuPage.cs 它只是一个母版页,女巫像父母和孩子一样加载 MenuDetail,为什么我需要通过 MenuPage 传递它? 因为 LoginPage 调用 MenuPage。 LoginPage 没有直接引用 MenuDetail。您可以以不同的方式构建代码,但根据您发布的内容,我会这样做。 @Jason 好的,我会像你说的那样尝试管理它。 【参考方案1】:

您实际上需要将您的 Login 对象传递给 MenuPage

Login lc = new Login

  LoginUserCode = resultC,
  LoginUserName = resultN
;

await Navigation.PushModalAsync(new Views.MenuPage(lc), false);

然后在MenuPage的构造函数中

public MenuPage(Login login) 

  // do something with login here

【讨论】:

以上是关于如何从我的 Login.cs 接收到 MasterPageDetail 的值?的主要内容,如果未能解决你的问题,请参考以下文章

单个设备突然停止从我的服务器接收 C2DM 推送

PayPal - 从我的网站传递客户 ID - 从我的网站接收具有相同客户 ID 的确认

如何解析 PHP 脚本接收到的 JSON 数据

“Git push heroku master”命令出错

git上master的更新分支,但缺少新版本

有没有办法从我的分支中提取主更改?