如何将数据绑定值分配给javascript变量

时间:2014-11-25 21:02:59

标签: javascript asp.net asp.net-mvc html5 razor

asp.net新手

        <div class="form-group">
            <div class="col-sm-5">
                <p>Showing results for FU <span data-bind="text: selectedFu() ? selectedFu().fuId : ''" /></p>
            </div>
        </div>
        @{
            var sfuId = "Bar";
        }

        @if (sfuId == "Bar") {
            <div class="form-group">
                <div class="col-sm-12">
                    <div class="warn">
                        <span data-bind="text: barDisclaimer"></span>
                    </div>
                </div>
            </div>
        }

可以工作,但如何指定var sfuId = selectedFu()? selectedFu()。fuId。我已经尝试了var sfuId =“,data-bind =”if:和ko.observable()但似乎无法正常工作。

谢谢你tkestowicz。 knockoutjs.com是一个很棒的网站。如果我搞清楚的话,我会仔细阅读并发布。

3 个答案:

答案 0 :(得分:0)

标题(或代码)错误。这样:

    @{
        var sfuId = "Bar";
    }

不是JavaScript,它是用Razor语法编写的C#代码。看看这个例子,你好像想要在C#下访问JavaScript对象。这是不可能的,因为在JavaScript执行之前编译了C#代码。你只能做相反的事情 - 将C#值传递给JS。

我认为你误解了剃刀的目的。它是服务器端模板引擎,这意味着所有代码在浏览器中呈现之前都会执行。另一方面,Knockout是一个JavaScript(客户端)库。

使用KO模板(http://knockoutjs.com/documentation/template-binding.html)代替Razor使其正常工作。

答案 1 :(得分:0)

我不知道asp或c#,但在javascript中我就是这样做的

my_node = document.querySelector("some_node");

// normal/safe method
my_node.getAttribute("data-task");
my_node.setAttribute("data-task", "new_value");

// be modern
my_node.dataset.task;
my_node.dataset.task = "new_value";

答案 2 :(得分:0)

我一直在寻找data-bind =“可见 Tkestowicz建议的网站非常有用。

        <div class="form-group">
    <div class="col-sm-5">
        <p>Showing results for FU <span data-bind="text: selectedFu() ? selectedPpo().fuId : ''" /></p>
    </div>
</div>
<div class="panel-body form-horizontal" data-bind="visible: selectedFu() ? selectedFu().fuId : false">
    <div class="form-group">
        <div class="col-sm-12">
            <div class="warn">
                <span data-bind="text: barDisclaimer"></span>
            </div>
        </div>
    </div>
</div>