Razor语法,代码不在AjaxOptions OnComplete中执行

时间:2012-03-12 07:59:24

标签: asp.net-mvc-3 razor

我有这样的MVC代码并想传递模型值@conversionModel.SourceFileName不幸的是这个代码实际上没有被执行,在我的情况下会有什么正确的Razor语法?

@Ajax.ActionLink("Remove file", "RemoveFile", "Converter", 
    new { id = @conversionModel.ProcessId }, 
    new AjaxOptions { 
    OnComplete = "RemoveFile(@conversionModel.SourceFileName);" 
    }) 

2 个答案:

答案 0 :(得分:0)

@Ajax.ActionLink(
    "Remove file", 
    "RemoveFile", 
    "Converter", 
    new { 
        id = conversionModel.ProcessId 
    }, 
    new AjaxOptions { 
        OnComplete = string.Format(
            "RemoveFile({0})", 
            Json.Encode(conversionModel.SourceFileName)
        ) 
    }
) 

答案 1 :(得分:0)

传递给“OnComplete”的字符串不会被Razor引擎解析,它只是在ajax调用完成时执行的一个简单的javascript字符串。

@Ajax.ActionLink("Remove file", "RemoveFile", "Converter", 
    new { id = @conversionModel.ProcessId }, 
    new AjaxOptions { 
       OnComplete = string.Format("RemoveFile({0})", Json.Encode(conversionModel.SourceFileName))
    }) 

更新:而不只是引用字符串,它应该使用Json.Encode进行编码,如Darin所说。