&引用;表达式不产生值“0”;在javascript中,vb.net

&引用;表达式不产生值“0”;在javascript中,vb.net,javascript,.net,vb.net,Javascript,.net,Vb.net,在“Deal”模型的Create视图中,我定义了一个javascript函数,它在单击按钮时在列表属性中创建一个新对象 我得到错误“表达式不产生值”。我不需要一个值,我只需要在列表中创建一个新的空对象,所以我不理解这个错误 javascript在我看来,将新句点添加到列表中的行抛出错误: <script type="text/javascript"> function addRow() { @Model.Periods.Add(New DealPeriod()

在“Deal”模型的Create视图中,我定义了一个javascript函数,它在单击按钮时在列表属性中创建一个新对象

我得到错误“表达式不产生值”。我不需要一个值,我只需要在列表中创建一个新的空对象,所以我不理解这个错误

javascript在我看来,将新句点添加到列表中的行抛出错误:

<script type="text/javascript">
    function addRow() {
        @Model.Periods.Add(New DealPeriod());
        ...
    }
</script>

函数addRow(){
@Model.Periods.Add(New DealPeriod());
...
}
“交易”模式:

Public必须继承类处理
...
作为新列表的公共财产期间(DealPeriod的)

您期望的是
@Model.Periods.Add(New DealPeriod())
在调用javascript函数时运行,但实际情况并非如此。在将HTML发送到客户端之前,内联VB代码在服务器端运行。 打开网页后,查看页面的源代码并观察javascript函数中呈现的代码。你不会看到那一行代码。
您要做的是对将执行所需逻辑的控制器进行ajax调用

这里有两个问题-为了解决“表达式不产生值”问题中的问题:

这里的
@
符号表示“将以下结果输出到http响应流”

由于
List.Add()
返回void,因此没有要发送到响应流的内容,因此它会向您提供该错误消息

换句话说,
@
需要一个值,而
列表。Add()
不生成值

第二个问题是,您似乎将服务器端执行与客户端执行混合在一起(注意,我没有说服务器端/客户端代码,这是以类似的方式允许的)。在调用“addRow”时,您似乎想要添加一个新的“DealPeriod”——这根本不是它的工作方式。VB.Net代码在服务器上运行,javascript代码在浏览器中的客户端上运行。它们没有联系在一起


有很多方法可以链接它们,比如ajax调用或信号器。

感谢您的回复,@Crowcoder。我认为Ajax是必要的,但我遵循了本教程,在本教程中它执行了类似的调用。我将使用Ajax。谢谢,@freedomn-m,帮我澄清了“@”的意思。我认为Ajax是必要的,但我遵循了本教程,在本教程中它执行了类似的调用。我将使用Ajax。
Public MustInherit Class Deal

    ...

    <Display(name:="Periodos")>
    Public Property Periods As New List(Of DealPeriod)