0

我一直在研究如何根据登录凭据添加数据。作为一个示例场景,假设我希望用户登录到应用程序,然后基于那里的登录,添加他们当天完成的时间,所以就像一个时间表应用程序。

  • 我不希望登录的用户看到除自己之外的任何其他名称。
  • 浏览屏幕只会显示他们提交的时间,而不是所有人。

在使用插入调用方法时(_customnameDataService.cs ) 中使用插入调用方法时,您可以通过关联表中的字段来添加用户名,如下所示:

entity.Username =  Application.User.Name

所以如果这是可能的,那么在登录时必须有一种在 JavaScript 中调用它的方法,所以任何帮助或指针都会有很大的帮助。添加一个 DataItem 并显示用户名将是最可取的。(使用编辑渲染代码)然后我可以通过层次结构传递它并仅显示与登录用户相关的信息。

4

1 回答 1

0

请按照以下步骤解决上述问题:

  1. 谷歌 GetUserName.ashx 以获取此文件的代码以添加到您的 Lightswitch HTML 项目中。
  2. 将以下函数复制到 javascript 文件中(在我的情况下,我的用户的浏览屏幕)
function CallGetUserName(operation) {
    $.ajax({
        type: 'post',
        data: {},
        url: '../web/GetUserName.ashx',
        success: operation.code(function AjaxSuccess(AjaxResult) {
            operation.complete(AjaxResult);
        })
    });
}
  1. 对于可以登录和访问 Lightswitch 应用程序的用户,用户信息必须存储在某个地方,在我的例子中是“ tbl_Users ”。该表有一行名为username。使用下面的代码,管理员或层次结构中的高层人员可以访问所有用户,并且表中引用的特定用户也可以访问自己。

myapp.BrowseUsers.username_postRender = function (element, contentItem) {

msls.promiseOperation(CallGetUserName).then(function PromiseSuccess(PromiseResult) {

    if (PromiseResult == 'TestUser' || PromiseResult == 'administrator') {

    } else {
        contentItem.value = PromiseResult;
    }

});

};

实际发生了什么?

该函数正在调用 GetUserName.ashx 文件,该文件反过来检索当前登录的用户。(从自动创建的aspnet_Users表中)我使用外键将我的表(tbl_Users)和aspnet_Users关联在一起。

在调试或发布环境中,如果您要添加数据项(字符串)并显示此信息,它将返回(“ TestUser ”)

myapp.BrowseUsers.displayUsername_postRender = function (element, contentItem) {

msls.promiseOperation(CallGetUserName).then(function PromiseSuccess(PromiseResult) 
    {
       element.innerText = PromiseResult;
    }); };
于 2015-02-16T09:30:19.973 回答