如何在Knockout中声明一个guid

时间:2015-07-01 10:45:47

标签: c# asp.net-mvc mvvm knockout.js

有人可以指点我如何在淘汰赛中宣布GUID。

表示字符串,int表示

self.Idnumber(0);
self.name("");

对于guid来说就像是

self.Guid(FAE04EC0-301F-11D3-BF4B-00C04F79EFBC) 

或只是

self.Guid(0)

4 个答案:

答案 0 :(得分:2)

guid /客户端js中没有内置Knockout方法。为此,您可以添加辅助函数。

以下函数返回完美的GUID

    function guid() {
        return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
            var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
            return v.toString(16);
        });
    }

只需在全局使用的your js中添加上述代码即可。只需调用此函数即可。它将返回正确的guid

你可以将硬编码的guid声明为可观察的,如下所示:

self.Guid = ko.observable('FAE04EC0-301F-11D3-BF4B-00C04F79EFBC')

要使其成为动态包含guid()功能,请按以下方式调用:

self.Guid = ko.observable(guid())

声明可观察变量后分配:

self.Guid(guid());
//or
self.Guid('FAE04EC0-301F-11D3-BF4B-00C04F79EFBC');

答案 1 :(得分:2)

我创造了这样的

     function CreateGuid() {
            var guid = (function () {
                function s4() {
                    return Math.floor((1 + Math.random()) * 0x10000)
                               .toString(16)
                               .substring(1);
                }
                return function () {
                    return s4() + s4() + '-' + s4() + '-' + s4() + '-' +
                           s4() + '-' + s4() + s4() + s4();
                };
            })();
            return guid();
        }

请检查它是否对您有帮助。

答案 2 :(得分:0)

只需编写javascript guid生成器函数

var guidGenerator =  function () {
    return {
        newuuid: function () {

            var s = [];
            var hexDigits = "0123456789abcdef";
            for (var i = 0; i < 36; i++) {
                s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
            }
            s[14] = "4";  // bits 12-15 of the time_hi_and_version field to 0010
            s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1);  // bits 6-7 of the clock_seq_hi_and_reserved to 01
            s[8] = s[13] = s[18] = s[23] = "-";
            return s.join("");
        }
    }

称之为

self.guid(guidGenerator.newuudid());

希望它有助于你

答案 3 :(得分:0)

KO没有默认类型guid,但低于建议。

客户端JS:

//This is a function to help verify that the guid is empty, good for future usage.
    function IsGuidEmpty (guid) {
        var emptyGuid = "00000000-0000-0000-0000-000000000000";
        if (guid === emptyGuid)
            return true;
        else
            return false;
    }
    //This is a function to set the guid to empty.
 function () SetEmptyGuid {
        var emptyGuid = "00000000-0000-0000-0000-000000000000";
        return emptyGuid;
    }

KO ViewModel:

self.Guid = ko.observable(SetEmptyGuid());

服务器端C#:

// your API or controller
     if (yourGuid != Guid.Empty)
    {
        //Todo
    }